summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
Diffstat (limited to 'Build')
-rwxr-xr-xBuild/source/.github/scripts/build-tl.sh4
-rwxr-xr-xBuild/source/configure13
-rw-r--r--Build/source/libs/README4
-rwxr-xr-xBuild/source/libs/configure13
-rw-r--r--Build/source/libs/harfbuzz/ChangeLog10
-rw-r--r--Build/source/libs/harfbuzz/TLpatches/ChangeLog10
-rw-r--r--Build/source/libs/harfbuzz/TLpatches/TL-Changes4
-rwxr-xr-xBuild/source/libs/harfbuzz/configure26
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/NEWS56
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/README0
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/README.md8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/meson.build5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh18
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh8
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py1
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py6
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh46
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh6
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc43
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h7
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h18
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc52
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc61
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc72
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h28
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc40
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh6
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh38
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh16
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh46
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh18
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh226
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh18
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh20
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh160
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh82
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh15
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh21
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc14
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc24
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh23
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc28
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh543
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh46
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh27
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh5932
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build20
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt34
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc12
-rw-r--r--Build/source/libs/harfbuzz/version.ac2
-rw-r--r--Build/source/libs/libpng/ChangeLog5
-rw-r--r--Build/source/libs/libpng/README4
-rw-r--r--Build/source/libs/libpng/TLpatches/ChangeLog4
-rw-r--r--Build/source/libs/libpng/TLpatches/TL-Changes4
-rwxr-xr-xBuild/source/libs/libpng/configure20
-rw-r--r--Build/source/libs/libpng/libpng-src/ANNOUNCE59
-rw-r--r--Build/source/libs/libpng/libpng-src/CHANGES22
-rw-r--r--Build/source/libs/libpng/libpng-src/CMakeLists.txt85
-rw-r--r--Build/source/libs/libpng/libpng-src/Makefile.am2
-rw-r--r--Build/source/libs/libpng/libpng-src/README2
-rw-r--r--Build/source/libs/libpng/libpng-src/arm/filter_neon.S266
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.aarch64-linux-android.sh16
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.armv7a-linux-androideabi.sh16
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.i686-linux-android.sh16
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.x86_64-linux-android.sh16
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.i686-pc-cygwin.sh18
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.x86_64-pc-cygwin.sh18
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.arm64-apple-darwin.sh15
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.x86_64-apple-darwin.sh15
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.aarch64-unknown-freebsd.sh14
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.i686-unknown-freebsd.sh14
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.riscv64-unknown-freebsd.sh14
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.x86_64-unknown-freebsd.sh14
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.aarch64-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabi.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabihf.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.i686-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64-linux-gnuabi64.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64el-linux-gnuabi64.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsel-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6el-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6-linux-gnuabi64.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6el-linux-gnuabi64.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64le-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.riscv64-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.x86_64-linux-gnu.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i386-pc-msdoswatcom.sh18
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i586-pc-msdosdjgpp.sh18
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i86-pc-msdoswatcom.sh19
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.aarch64-windows-llvm.sh18
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-w64-mingw32.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-windows-llvm.sh18
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-w64-mingw32.sh21
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-windows-llvm.sh18
-rw-r--r--Build/source/libs/libpng/libpng-src/configure.ac8
-rw-r--r--Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile15
-rw-r--r--Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt4
-rwxr-xr-xBuild/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh31
-rw-r--r--Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc16
-rw-r--r--Build/source/libs/libpng/libpng-src/contrib/tools/chkfmt.sh157
-rw-r--r--Build/source/libs/libpng/libpng-src/libpng-manual.txt2
-rw-r--r--Build/source/libs/libpng/libpng-src/libpng.36
-rw-r--r--Build/source/libs/libpng/libpng-src/libpngpf.34
-rw-r--r--Build/source/libs/libpng/libpng-src/png.52
-rw-r--r--Build/source/libs/libpng/libpng-src/png.c101
-rw-r--r--Build/source/libs/libpng/libpng-src/png.h26
-rw-r--r--Build/source/libs/libpng/libpng-src/pngconf.h8
-rw-r--r--Build/source/libs/libpng/libpng-src/pngerror.c9
-rw-r--r--Build/source/libs/libpng/libpng-src/pnglibconf.h2
-rw-r--r--Build/source/libs/libpng/libpng-src/pngpriv.h41
-rw-r--r--Build/source/libs/libpng/libpng-src/pngtest.c18
-rw-r--r--Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md2
-rw-r--r--Build/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake15
-rw-r--r--Build/source/libs/libpng/libpng-src/scripts/cmake/README.md1
-rw-r--r--Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in5
-rw-r--r--Build/source/libs/libpng/libpng-src/scripts/dfn.awk16
-rw-r--r--Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in2
-rw-r--r--Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in2
-rw-r--r--Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt2
-rw-r--r--Build/source/libs/libpng/version.ac2
-rw-r--r--Build/source/texk/README2
-rwxr-xr-xBuild/source/texk/configure13
-rw-r--r--Build/source/texk/dvipdfm-x/ChangeLog8
-rwxr-xr-xBuild/source/texk/dvipdfm-x/configure22
-rw-r--r--Build/source/texk/dvipdfm-x/configure.ac2
-rw-r--r--Build/source/texk/dvipdfm-x/tests/Makefile_upjf2
-rw-r--r--Build/source/texk/dvipdfm-x/tfm.c13
-rw-r--r--Build/source/texk/dvipsk/ChangeLog20
-rw-r--r--Build/source/texk/dvipsk/Makefile.am18
-rw-r--r--Build/source/texk/dvipsk/Makefile.in12
-rw-r--r--Build/source/texk/dvipsk/dopage.c2
-rw-r--r--Build/source/texk/dvipsk/dvips.h1
-rw-r--r--Build/source/texk/dvipsk/testdata/Makefile_upjf25
-rw-r--r--Build/source/texk/dvipsk/testdata/upjf-c.pl24
-rw-r--r--Build/source/texk/dvipsk/testdata/upjf-c.tfmbin0 -> 172 bytes
-rw-r--r--Build/source/texk/dvipsk/testdata/upjf.map2
-rw-r--r--Build/source/texk/dvipsk/testdata/upjf2.dvibin0 -> 664 bytes
-rw-r--r--Build/source/texk/dvipsk/testdata/upjf2.tex22
-rw-r--r--Build/source/texk/dvipsk/testdata/upjf2_full.vfbin0 -> 7268 bytes
-rw-r--r--Build/source/texk/dvipsk/testdata/upjf2_full.zvp02979
-rw-r--r--Build/source/texk/dvipsk/testdata/upjv-c.pl25
-rw-r--r--Build/source/texk/dvipsk/testdata/upjv-c.tfmbin0 -> 172 bytes
-rw-r--r--Build/source/texk/dvipsk/testdata/upjv2_full.vfbin0 -> 7268 bytes
-rw-r--r--Build/source/texk/dvipsk/testdata/upjv2_full.zvp02979
-rw-r--r--Build/source/texk/dvipsk/tfmload.c29
-rwxr-xr-xBuild/source/texk/dvipsk/uptex-upjf2.test26
-rw-r--r--Build/source/texk/dvipsk/virtualfont.c4
-rw-r--r--Build/source/texk/kpathsea/ChangeLog5
-rw-r--r--Build/source/texk/kpathsea/texmf.cnf1
-rw-r--r--Build/source/texk/texlive/linked_scripts/Makefile.am4
-rw-r--r--Build/source/texk/texlive/linked_scripts/Makefile.in4
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/bookshelf/bookshelf-listallfonts271
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/bookshelf/bookshelf-mkfontsel92
-rw-r--r--Build/source/texk/texlive/linked_scripts/l3build/l3build.lua4
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/minted/latexminted.py359
-rw-r--r--Build/source/texk/texlive/linked_scripts/scripts.lst4
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/sqltex/sqltex1381
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/xindex/xindex.lua17
-rw-r--r--Build/source/texk/web2c/ChangeLog5
-rw-r--r--Build/source/texk/web2c/Makefile.in87
-rw-r--r--Build/source/texk/web2c/cwebdir/ChangeLog14
-rw-r--r--Build/source/texk/web2c/cwebdir/ctwill-mini.ch28
-rw-r--r--Build/source/texk/web2c/cwebdir/ctwill-w2c.ch16
-rw-r--r--Build/source/texk/web2c/cwebdir/cweav-w2c.ch4
-rw-r--r--Build/source/texk/web2c/cwebdir/cweave.w48
-rw-r--r--Build/source/texk/web2c/cwebdir/cwebacromac.tex25
-rw-r--r--Build/source/texk/web2c/cwebdir/cwebmac.tex13
-rw-r--r--Build/source/texk/web2c/cwebdir/refsort.ch12
-rw-r--r--Build/source/texk/web2c/euptexdir/ChangeLog33
-rw-r--r--Build/source/texk/web2c/euptexdir/am/euptex.am57
-rw-r--r--Build/source/texk/web2c/euptexdir/eptex.ech49
-rw-r--r--Build/source/texk/web2c/euptexdir/eptex_version.h2
-rwxr-xr-xBuild/source/texk/web2c/euptexdir/euptex-ctrlsym.test49
-rwxr-xr-xBuild/source/texk/web2c/euptexdir/euptex-kinsoku.test69
-rwxr-xr-xBuild/source/texk/web2c/euptexdir/euptex-prim.test30
-rwxr-xr-xBuild/source/texk/web2c/euptexdir/euptex-prntknj.test61
-rwxr-xr-xBuild/source/texk/web2c/euptexdir/euptex-ucs.test43
-rw-r--r--Build/source/texk/web2c/euptexdir/pdfutils.ch4
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/control-symbol.tex108
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex6
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/endline.log43
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/endlinechar.tex57
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/eup-endlinea.typ93
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/eup-inhibitgluea.typ1846
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/eup-jctrlsyma.typ121
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/eup-pknj-ea.typ825
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/eup-pknj-sa.typ829
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/eup-pknj-ua.typ829
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/eup-prim.log10
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/eup-prim.tex33
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/free_ixsp.log29
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/free_ixsp.tex (renamed from Build/source/texk/web2c/ptexdir/tests/free_ixsp.tex)7
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/free_pena.log29
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/free_pena.tex (renamed from Build/source/texk/web2c/ptexdir/tests/free_pena.tex)14
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/inhibitglue.tex (renamed from Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex)24
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/jctrlsym.log85
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/kinsoku_search.log84
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/kinsoku_search.tex (renamed from Build/source/texk/web2c/ptexdir/tests/kinsoku_search.tex)0
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/kinsoku_table.log38
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/kinsoku_table.tex (renamed from Build/source/texk/web2c/ptexdir/tests/kinsoku_table.tex)5
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/pknj-e.log224
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/pknj-s.log224
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/pknj-u.log224
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/postpena.log43
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/postpena.tex (renamed from Build/source/texk/web2c/ptexdir/tests/postpena.tex)8
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/printkanji.tex176
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/ucs-e.log29
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/ucs-s.log29
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/ucs-u.log529
-rw-r--r--Build/source/texk/web2c/euptexdir/tests/ucs.tex36
-rw-r--r--Build/source/texk/web2c/luatexdir/ChangeLog9
-rw-r--r--Build/source/texk/web2c/luatexdir/font/texfont.c2
-rw-r--r--Build/source/texk/web2c/luatexdir/luatex.c6
-rw-r--r--Build/source/texk/web2c/luatexdir/luatex_svnversion.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/textoken.c12
-rw-r--r--Build/source/texk/web2c/mplibdir/ChangeLog5
-rw-r--r--Build/source/texk/web2c/mplibdir/svgout.w4
-rw-r--r--Build/source/texk/web2c/ptexdir/ChangeLog26
-rw-r--r--Build/source/texk/web2c/ptexdir/am/ptex.am32
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex-base.ch30
-rwxr-xr-xBuild/source/texk/web2c/ptexdir/ptex-ctrlsym.test77
-rwxr-xr-xBuild/source/texk/web2c/ptexdir/ptex-prntknj.test48
-rwxr-xr-xBuild/source/texk/web2c/ptexdir/ptex-ucs.test37
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex_version.h2
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/chartoken.log41
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/control-symbol.tex11
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/ctrlsym.log11
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/ctrlsym.tex36
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/endline.log24
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/endlinechar.tex30
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/jctrlsym.log42
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/p-endlinea.typ68
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/p-jctrlsyma.typ123
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/p-lineenda.typ295
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/p-pknj-ea.typ825
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/p-pknj-sa.typ829
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/pknj-e.log223
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/pknj-s.log223
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/printkanji.tex12
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex10
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/ucs-e.log28
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/ucs-s.log28
-rw-r--r--Build/source/texk/web2c/ptexdir/tests/ucs.tex9
-rw-r--r--Build/source/texk/web2c/tests/dump-basic.tex6
-rw-r--r--Build/source/texk/web2c/tests/ec-lmr10.tfmbin0 -> 12056 bytes
-rw-r--r--Build/source/texk/web2c/texprofdir/doc/texprof.hntbin11684262 -> 11685007 bytes
-rw-r--r--Build/source/texk/web2c/texprofdir/doc/texprof.pdfbin4190250 -> 4191378 bytes
-rw-r--r--Build/source/texk/web2c/texprofdir/texprof.w13
-rw-r--r--Build/source/texk/web2c/uptexdir/COPYRIGHT.ja2
-rw-r--r--Build/source/texk/web2c/uptexdir/ChangeLog37
-rw-r--r--Build/source/texk/web2c/uptexdir/am/uptex.am14
-rw-r--r--Build/source/texk/web2c/uptexdir/kanji.c73
-rw-r--r--Build/source/texk/web2c/uptexdir/ptex-base.ch30
-rw-r--r--Build/source/texk/web2c/uptexdir/ptex_version.h2
-rw-r--r--Build/source/texk/web2c/uptexdir/tests/unibib.bbl7
-rw-r--r--Build/source/texk/web2c/uptexdir/tests/unibib.bib22
-rw-r--r--Build/source/texk/web2c/uptexdir/tests/unibib.tex9
-rw-r--r--Build/source/texk/web2c/uptexdir/tests/up-prim.log9
-rw-r--r--Build/source/texk/web2c/uptexdir/tests/up-prim.tex33
-rw-r--r--Build/source/texk/web2c/uptexdir/upbibtex.ch6
-rw-r--r--Build/source/texk/web2c/uptexdir/uptex-m.ch33
-rwxr-xr-xBuild/source/texk/web2c/uptexdir/uptex-prim.test30
-rwxr-xr-xBuild/source/utils/configure13
292 files changed, 24376 insertions, 4511 deletions
diff --git a/Build/source/.github/scripts/build-tl.sh b/Build/source/.github/scripts/build-tl.sh
index dde36ebe2b5..8f8fd36f00e 100755
--- a/Build/source/.github/scripts/build-tl.sh
+++ b/Build/source/.github/scripts/build-tl.sh
@@ -56,7 +56,9 @@ then
solaris)
# pkg install pkg://solaris/developer/gcc-5
# maybe only the following is enough, and fortran and gobjc needs not be installed?
- pkg install pkg://solaris/developer/gcc/gcc-c++-5
+ # pkg install pkg://solaris/developer/gcc/gcc-c++-5
+ /opt/csw/bin/pkgutil -U
+ /opt/csw/bin/pkgutil -y -i autoconf automake gcc5core libtool
;;
*)
echo "Unsupported build system: $buildsys" >&2
diff --git a/Build/source/configure b/Build/source/configure
index 701ded6197a..4caf5f3457d 100755
--- a/Build/source/configure
+++ b/Build/source/configure
@@ -856,6 +856,7 @@ enable_luahbtex
enable_luajithbtex
enable_mp
enable_pmp
+enable_texprof
enable_upmp
enable_xetex
enable_xetex_synctex
@@ -1679,6 +1680,7 @@ Optional Features:
--disable-luajithbtex do not compile and install LuaHBJITTeX
--disable-mp do not compile and install MetaPost
--disable-pmp do not compile and install pMetaPost
+ --disable-texprof do not compile and install TeXprof
--disable-upmp do not compile and install upMetaPost
--disable-xetex do not compile and install XeTeX
--disable-xetex-synctex build XeTeX without SyncTeX support
@@ -5904,6 +5906,17 @@ test "x$enable_web2c:$enable_pmp" = xyes:yes && {
need_libpng=yes
need_ptexenc=yes
}
+# Check whether --enable-texprof was given.
+if test ${enable_texprof+y}
+then :
+ enableval=$enable_texprof;
+fi
+case $enable_texprof in #(
+ yes | no) :
+ ;; #(
+ *) :
+ enable_texprof=yes ;;
+esac
# Check whether --enable-upmp was given.
if test ${enable_upmp+y}
then :
diff --git a/Build/source/libs/README b/Build/source/libs/README
index 2e4bb26357e..cb87f44feff 100644
--- a/Build/source/libs/README
+++ b/Build/source/libs/README
@@ -28,7 +28,7 @@ graphite2 1.3.14 - checked 10apr20
https://sourceforge.net/projects/silgraphite/files/graphite2/
(requires C++11)
-harfbuzz 9.0.0 - checked 27aug24
+harfbuzz 10.0.1 - checked 25sep24
https://github.com/harfbuzz/harfbuzz/releases/latest
icu 74.2 - checked 22dec23
@@ -37,7 +37,7 @@ icu 74.2 - checked 22dec23
libpaper 1.1.29 - checked 07jan24
https://ftp.debian.org/debian/pool/main/libp/libpaper/
-libpng 1.6.43 - checked 24feb24
+libpng 1.6.44 - checked 13sep24
https://sourceforge.net/projects/libpng/files/ - used by many
lua 5.2.4
diff --git a/Build/source/libs/configure b/Build/source/libs/configure
index 7a8ec29d2b2..4f2ed804031 100755
--- a/Build/source/libs/configure
+++ b/Build/source/libs/configure
@@ -799,6 +799,7 @@ enable_luahbtex
enable_luajithbtex
enable_mp
enable_pmp
+enable_texprof
enable_upmp
enable_xetex
enable_xetex_synctex
@@ -1599,6 +1600,7 @@ Optional Features:
--disable-luajithbtex do not compile and install LuaHBJITTeX
--disable-mp do not compile and install MetaPost
--disable-pmp do not compile and install pMetaPost
+ --disable-texprof do not compile and install TeXprof
--disable-upmp do not compile and install upMetaPost
--disable-xetex do not compile and install XeTeX
--disable-xetex-synctex build XeTeX without SyncTeX support
@@ -5028,6 +5030,17 @@ test "x$enable_web2c:$enable_pmp" = xyes:yes && {
need_libpng=yes
need_ptexenc=yes
}
+# Check whether --enable-texprof was given.
+if test ${enable_texprof+y}
+then :
+ enableval=$enable_texprof;
+fi
+case $enable_texprof in #(
+ yes | no) :
+ ;; #(
+ *) :
+ enable_texprof=yes ;;
+esac
# Check whether --enable-upmp was given.
if test ${enable_upmp+y}
then :
diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog
index 44c06e7ba95..629856d5b41 100644
--- a/Build/source/libs/harfbuzz/ChangeLog
+++ b/Build/source/libs/harfbuzz/ChangeLog
@@ -1,3 +1,13 @@
+2024-09-25 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+
+ Import harfbuzz-10.0.1.
+ * version.ac: Adjusted.
+
+2024-09-24 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+
+ Import harfbuzz-10.0.0.
+ * version.ac: Adjusted.
+
2024-08-27 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
* Makefile.am: Use amalgam harfbuzz.cc, since it is easy to
diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog
index 3571fec9e0f..b9d1fb3dbd2 100644
--- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog
+++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog
@@ -1,3 +1,13 @@
+2024-09-25 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+
+ Imported harfbuzz-10.0.1 source tree from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/10.0.1/
+
+2024-09-24 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+
+ Imported harfbuzz-10.0.0 source tree from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/10.0.0/
+
2024-08-26 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
Imported harfbuzz-9.0.0 source tree from:
diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes
index f0e43685762..e66a14e7d9f 100644
--- a/Build/source/libs/harfbuzz/TLpatches/TL-Changes
+++ b/Build/source/libs/harfbuzz/TLpatches/TL-Changes
@@ -1,5 +1,5 @@
-Changes applied to the harfbuzz-9.0.0/ tree as obtained from:
- https://github.com/harfbuzz/harfbuzz/releases/download/9.0.0/
+Changes applied to the harfbuzz-10.0.1/ tree as obtained from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/10.0.1/
Removed:
.clang-format
diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure
index f90439f7222..1aa85873ec8 100755
--- a/Build/source/libs/harfbuzz/configure
+++ b/Build/source/libs/harfbuzz/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 9.0.0.
+# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 10.0.1.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -604,8 +604,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='harfbuzz (TeX Live)'
PACKAGE_TARNAME='harfbuzz--tex-live-'
-PACKAGE_VERSION='9.0.0'
-PACKAGE_STRING='harfbuzz (TeX Live) 9.0.0'
+PACKAGE_VERSION='10.0.1'
+PACKAGE_STRING='harfbuzz (TeX Live) 10.0.1'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1341,7 +1341,7 @@ 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 harfbuzz (TeX Live) 9.0.0 to adapt to many kinds of systems.
+'configure' configures harfbuzz (TeX Live) 10.0.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1413,7 +1413,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of harfbuzz (TeX Live) 9.0.0:";;
+ short | recursive ) echo "Configuration of harfbuzz (TeX Live) 10.0.1:";;
esac
cat <<\_ACEOF
@@ -1518,7 +1518,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-harfbuzz (TeX Live) configure 9.0.0
+harfbuzz (TeX Live) configure 10.0.1
generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2075,7 +2075,7 @@ 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 harfbuzz (TeX Live) $as_me 9.0.0, which was
+It was created by harfbuzz (TeX Live) $as_me 10.0.1, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
@@ -5252,7 +5252,7 @@ fi
# Define the identity of the package.
PACKAGE='harfbuzz--tex-live-'
- VERSION='9.0.0'
+ VERSION='10.0.1'
# Some tools Automake needs.
@@ -5440,10 +5440,10 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags
echo 'tldbg:KPSE_BASIC done (pkg=harfbuzz, amopt=no-define)' >&5
-HB_VERSION_MAJOR=9
+HB_VERSION_MAJOR=10
HB_VERSION_MINOR=0
-HB_VERSION_MICRO=0
-HB_VERSION=9.0.0
+HB_VERSION_MICRO=1
+HB_VERSION=10.0.1
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -9292,7 +9292,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by harfbuzz (TeX Live) $as_me 9.0.0, which was
+This file was extended by harfbuzz (TeX Live) $as_me 10.0.1, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -9360,7 +9360,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-harfbuzz (TeX Live) config.status 9.0.0
+harfbuzz (TeX Live) config.status 10.0.1
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
index 9a18f34bff8..38d1c849ba1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
@@ -1,3 +1,57 @@
+Overview of changes leading to 10.0.1
+Tuesday, Sep 24, 2024
+====================================
+- Relax sanitization checks for “morx” subtables to fix broken AAT shaping of
+ macOS 15.0 version of GeezaPro.
+
+
+Overview of changes leading to 10.0.0
+Monday, Sep 23, 2024
+====================================
+- Unicode 16.0.0 support.
+- Various documentation fixes.
+- Various build fixes.
+- Add API to allow HarfBuzz client to set what glyph to use when a Unicode
+ Variation Selector is not supported by the font, which would allow the client
+ to customize what happens in this case, by using a different font for example.
+- Add a callback to for “hb_face_t” for getting the list of table tags. This is
+ now used to make calling “hb_face_get_table_tags()” work on a faces created by
+ “hb_face_create_for_tables()” (e.g. faces returned by “hb_subset_or_fail()”).
+- CGJ and Mongolian Variation Selectors are now ignored during glyph
+ positioning, previously they would block both glyph substitution and
+ positioning across them.
+- Support cairo script as an output format for “hb-view” command line tool.
+- Drop an optimization that would cause HarfBuzz not apply pair positioning
+ lookup subtables under certain circumstances, for compatibility with other
+ implementations that do apply these subtables.
+- Subsetting will now fail if source font has no glyphs, so feeding the subsetter
+ invalid data will not silently return an empty face.
+- If after partially instancing a font no variation data is left (the instance
+ is fully static), don’t consider this a failure.
+- Workaround a Firefox bug in displaying SVGs generated be “hb-view” command
+ line tool under certain circumstances.
+- Fix bug in macroman mapping for “cmap” table.
+- Fix difference shaping output when HarfBuzz is built with with
+ “HB_NO_OT_RULESETS_FAST_PATH” enabled.
+- Various subsetting and instancing fixes.
+- Various fuzzing fixes.
+- Add “with_libstdcxx” meson build option.
+
+
+- New API:
++HB_SCRIPT_GARAY
++HB_SCRIPT_GURUNG_KHEMA
++HB_SCRIPT_KIRAT_RAI
++HB_SCRIPT_OL_ONAL
++HB_SCRIPT_SUNUWAR
++HB_SCRIPT_TODHRI
++HB_SCRIPT_TULU_TIGALARI
++hb_buffer_set_not_found_variation_selector_glyph()
++hb_buffer_get_not_found_variation_selector_glyph()
++hb_get_table_tags_func_t
++hb_face_set_get_table_tags_func()
+
+
Overview of changes leading to 9.0.0
Thursday, Jun 27, 2024
====================================
@@ -27,7 +81,7 @@ Monday, May 13, 2024
- Various build fixes.
- Various subsetter and instancer fixes.
-- New API
+- New API:
+HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS
+hb_subset_input_get_axis_range()
+hb_subset_input_pin_axis_location()
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README b/Build/source/libs/harfbuzz/harfbuzz-src/README
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-src/README
+++ /dev/null
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README.md b/Build/source/libs/harfbuzz/harfbuzz-src/README.md
index da4de65cf09..2cd8b4068e3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/README.md
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/README.md
@@ -14,7 +14,7 @@ HarfBuzz is a text shaping engine. It primarily supports [OpenType][1], but also
[Apple Advanced Typography][2]. HarfBuzz is used in Android, Chrome,
ChromeOS, Firefox, GNOME, GTK+, KDE, Qt, LibreOffice, OpenJDK, XeTeX,
PlayStation, Microsoft Edge, Adobe Photoshop, Illustrator, InDesign,
-Godot Engine, and other places.
+Godot Engine, Unreal Engine, and other places.
[![xkcd-derived image](xkcd.png)](https://xkcd.com/2347/)
@@ -52,8 +52,8 @@ For custom configurations, see [CONFIG.md](CONFIG.md).
For testing and profiling, see [TESTING.md](TESTING.md).
To get a better idea of where HarfBuzz stands in the text rendering stack you
-may want to read [State of Text Rendering][6], though, that document is many
-years old. Here are a few presentation slides about HarfBuzz at the
+may want to read [State of Text Rendering 2024][6].
+Here are a few presentation slides about HarfBuzz at the
Internationalization and Unicode Conference over the years:
* November 2014, [Unicode, OpenType, and HarfBuzz: Closing the Circle][7],
@@ -97,7 +97,7 @@ transliterated using the Latin script. It also means "talkative" or
[3]: https://github.com/harfbuzz/harfbuzz/releases
[4]: https://github.com/harfbuzz/harfbuzz
[5]: http://mces.blogspot.com/2009/11/pango-vs-harfbuzz.html
-[6]: http://behdad.org/text/
+[6]: http://behdad.org/text2024
[7]: https://goo.gl/FSIQuC
[8]: https://goo.gl/2wSRu
[9]: http://behdad.org/download/Presentations/slippy/harfbuzz_slides.pdf
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
index 9606190b9c8..ee064a00e2e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
@@ -1,6 +1,6 @@
project('harfbuzz', 'c', 'cpp',
meson_version: '>= 0.55.0',
- version: '9.0.0',
+ version: '10.0.1',
default_options: [
'cpp_eh=none', # Just to support msvc, we are passing -fno-exceptions also anyway
# 'cpp_rtti=false', # Do NOT enable, wraps inherit it and ICU needs RTTI
@@ -186,7 +186,8 @@ else
endif
if icu_dep.found() and icu_dep.version().version_compare('>=75.1') and (get_option('cpp_std') == 'c++11' or get_option('cpp_std') == 'c++14')
- add_project_arguments('-std=c++17', language: 'cpp')
+ cpp17_arg = cpp.get_argument_syntax() == 'msvc' ? '/std:c++17' : '-std=c++17'
+ add_project_arguments(cpp17_arg, language: 'cpp')
endif
if icu_dep.found() and icu_dep.type_name() == 'pkgconfig'
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt b/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt
index 97d6daec1a6..c53cf45fcb4 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt
@@ -40,6 +40,8 @@ option('benchmark', type: 'feature', value: 'disabled',
description: 'Enable benchmark tests')
option('icu_builtin', type: 'boolean', value: false,
description: 'Don\'t separate ICU support as harfbuzz-icu module')
+option('with_libstdcxx', type: 'boolean', value: false,
+ description: 'Allow linking with libstdc++')
option('experimental_api', type: 'boolean', value: false,
description: 'Enable experimental APIs')
option('ragel_subproject', type: 'boolean', value: false,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh
index 53c4ce0d437..6b5b104f3d3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh
@@ -2339,7 +2339,11 @@ struct COLR
c->plan->colrv1_varstore_inner_maps.as_array ()))
return_trace (false);
- if (!out->varStore.serialize_serialize (c->serializer,
+ /* do not serialize varStore if there's no variation data after
+ * instancing: region_list or var_data is empty */
+ if (item_vars.get_region_list () &&
+ item_vars.get_vardata_encodings () &&
+ !out->varStore.serialize_serialize (c->serializer,
item_vars.has_long_word (),
c->plan->axis_tags,
item_vars.get_region_list (),
@@ -2347,7 +2351,9 @@ struct COLR
return_trace (false);
/* if varstore is optimized, update colrv1_new_deltaset_idx_varidx_map in
- * subset plan */
+ * subset plan.
+ * If varstore is empty after instancing, varidx_map would be empty and
+ * all var_idxes will be updated to VarIdx::NO_VARIATION */
if (optimize)
{
const hb_map_t &varidx_map = item_vars.get_varidx_map ();
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh
index 45baeb4ec59..16b232a2ae7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh
@@ -633,8 +633,8 @@ struct GDEFVersion1_2
ligCaretList.sanitize (c, this) &&
markAttachClassDef.sanitize (c, this) &&
hb_barrier () &&
- (version.to_int () < 0x00010002u || markGlyphSetsDef.sanitize (c, this)) &&
- (version.to_int () < 0x00010003u || varStore.sanitize (c, this)));
+ ((version.to_int () < 0x00010002u && hb_barrier ()) || markGlyphSetsDef.sanitize (c, this)) &&
+ ((version.to_int () < 0x00010003u && hb_barrier ()) || varStore.sanitize (c, this)));
}
static void remap_varidx_after_instantiation (const hb_map_t& varidx_map,
@@ -668,13 +668,13 @@ struct GDEFVersion1_2
// the end of the GDEF table.
// See: https://github.com/harfbuzz/harfbuzz/issues/4636
auto snapshot_version0 = c->serializer->snapshot ();
- if (unlikely (version.to_int () >= 0x00010002u && !c->serializer->embed (markGlyphSetsDef)))
+ if (unlikely (version.to_int () >= 0x00010002u && hb_barrier () && !c->serializer->embed (markGlyphSetsDef)))
return_trace (false);
bool subset_varstore = false;
unsigned varstore_index = (unsigned) -1;
auto snapshot_version2 = c->serializer->snapshot ();
- if (version.to_int () >= 0x00010003u)
+ if (version.to_int () >= 0x00010003u && hb_barrier ())
{
if (unlikely (!c->serializer->embed (varStore))) return_trace (false);
if (c->plan->all_axes_pinned)
@@ -712,7 +712,7 @@ struct GDEFVersion1_2
}
bool subset_markglyphsetsdef = false;
- if (version.to_int () >= 0x00010002u)
+ if (version.to_int () >= 0x00010002u && hb_barrier ())
{
subset_markglyphsetsdef = out->markGlyphSetsDef.serialize_subset (c, markGlyphSetsDef, this);
}
@@ -875,7 +875,7 @@ struct GDEF
bool has_mark_glyph_sets () const
{
switch (u.version.major) {
- case 1: return u.version.to_int () >= 0x00010002u && u.version1.markGlyphSetsDef != 0;
+ case 1: return u.version.to_int () >= 0x00010002u && hb_barrier () && u.version1.markGlyphSetsDef != 0;
#ifndef HB_NO_BEYOND_64K
case 2: return u.version2.markGlyphSetsDef != 0;
#endif
@@ -885,7 +885,7 @@ struct GDEF
const MarkGlyphSets &get_mark_glyph_sets () const
{
switch (u.version.major) {
- case 1: return u.version.to_int () >= 0x00010002u ? this+u.version1.markGlyphSetsDef : Null(MarkGlyphSets);
+ case 1: return u.version.to_int () >= 0x00010002u && hb_barrier () ? this+u.version1.markGlyphSetsDef : Null(MarkGlyphSets);
#ifndef HB_NO_BEYOND_64K
case 2: return this+u.version2.markGlyphSetsDef;
#endif
@@ -895,7 +895,7 @@ struct GDEF
bool has_var_store () const
{
switch (u.version.major) {
- case 1: return u.version.to_int () >= 0x00010003u && u.version1.varStore != 0;
+ case 1: return u.version.to_int () >= 0x00010003u && hb_barrier () && u.version1.varStore != 0;
#ifndef HB_NO_BEYOND_64K
case 2: return u.version2.varStore != 0;
#endif
@@ -905,7 +905,7 @@ struct GDEF
const ItemVariationStore &get_var_store () const
{
switch (u.version.major) {
- case 1: return u.version.to_int () >= 0x00010003u ? this+u.version1.varStore : Null(ItemVariationStore);
+ case 1: return u.version.to_int () >= 0x00010003u && hb_barrier () ? this+u.version1.varStore : Null(ItemVariationStore);
#ifndef HB_NO_BEYOND_64K
case 2: return this+u.version2.varStore;
#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh
index 9c805b39a18..5ffeb5d0c10 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh
@@ -139,14 +139,8 @@ struct PairPosFormat2_4 : ValueBase
return_trace (false);
}
- unsigned int klass2 = (this+classDef2).get_class (buffer->info[skippy_iter.idx].codepoint);
- if (!klass2)
- {
- buffer->unsafe_to_concat (buffer->idx, skippy_iter.idx + 1);
- return_trace (false);
- }
-
unsigned int klass1 = (this+classDef1).get_class (buffer->cur().codepoint);
+ unsigned int klass2 = (this+classDef2).get_class (buffer->info[skippy_iter.idx].codepoint);
if (unlikely (klass1 >= class1Count || klass2 >= class2Count))
{
buffer->unsafe_to_concat (buffer->idx, skippy_iter.idx + 1);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py
index 4ef970265d1..2c8abcca670 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py
@@ -34,6 +34,7 @@ ALLOWED_BLOCKS = [
'Devanagari Extended',
'Myanmar Extended-B',
'Myanmar Extended-A',
+ 'Myanmar Extended-C',
]
files = [open (x, encoding='utf-8') for x in sys.argv[1:]]
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
index 0012e5db041..9d65dbdf230 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
@@ -389,7 +389,11 @@ def map_to_use(data):
# and https://github.com/harfbuzz/harfbuzz/issues/1631
if U in [0x11302, 0x11303, 0x114C1]: UIPC = Top
- assert (UIPC in [Not_Applicable, Visual_Order_Left] or U == 0x0F7F or
+ # TODO: https://github.com/microsoft/font-tools/issues/17#issuecomment-2346952091
+ if U == 0x113CF: UIPC = Bottom
+
+ assert (UIPC in [Not_Applicable, Visual_Order_Left] or
+ U in {0x0F7F, 0x11A3A} or
USE in use_positions), "%s %s %s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UDI, UGC, AJT)
pos_mapping = use_positions.get(USE, None)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh
index 2a9d8346c0b..b24507ece17 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh
@@ -368,7 +368,7 @@ struct graph_t
// it's parent where possible.
int64_t modified_distance =
- hb_min (hb_max(distance + distance_modifier (), 0), 0x7FFFFFFFFFF);
+ hb_clamp (distance + distance_modifier (), (int64_t) 0, 0x7FFFFFFFFFF);
if (has_max_priority ()) {
modified_distance = 0;
}
@@ -1141,7 +1141,7 @@ struct graph_t
unsigned clone_idx = duplicate (child_idx);
if (clone_idx == (unsigned) -1) return false;
-
+
for (unsigned parent_idx : *parents) {
// duplicate shifts the root node idx, so if parent_idx was root update it.
if (parent_idx == clone_idx) parent_idx++;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh
index b9fe63a2540..2ea86a2a192 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh
@@ -468,11 +468,11 @@ struct Lookup
const T* get_value (hb_codepoint_t glyph_id, unsigned int num_glyphs) const
{
switch (u.format) {
- case 0: return u.format0.get_value (glyph_id, num_glyphs);
- case 2: return u.format2.get_value (glyph_id);
- case 4: return u.format4.get_value (glyph_id);
- case 6: return u.format6.get_value (glyph_id);
- case 8: return u.format8.get_value (glyph_id);
+ case 0: hb_barrier (); return u.format0.get_value (glyph_id, num_glyphs);
+ case 2: hb_barrier (); return u.format2.get_value (glyph_id);
+ case 4: hb_barrier (); return u.format4.get_value (glyph_id);
+ case 6: hb_barrier (); return u.format6.get_value (glyph_id);
+ case 8: hb_barrier (); return u.format8.get_value (glyph_id);
default:return nullptr;
}
}
@@ -481,7 +481,7 @@ struct Lookup
{
switch (u.format) {
/* Format 10 cannot return a pointer. */
- case 10: return u.format10.get_value_or_null (glyph_id);
+ case 10: hb_barrier (); return u.format10.get_value_or_null (glyph_id);
default:
const T *v = get_value (glyph_id, num_glyphs);
return v ? *v : Null (T);
@@ -492,12 +492,12 @@ struct Lookup
void collect_glyphs (set_t &glyphs, unsigned int num_glyphs) const
{
switch (u.format) {
- case 0: u.format0.collect_glyphs (glyphs, num_glyphs); return;
- case 2: u.format2.collect_glyphs (glyphs); return;
- case 4: u.format4.collect_glyphs (glyphs); return;
- case 6: u.format6.collect_glyphs (glyphs); return;
- case 8: u.format8.collect_glyphs (glyphs); return;
- case 10: u.format10.collect_glyphs (glyphs); return;
+ case 0: hb_barrier (); u.format0.collect_glyphs (glyphs, num_glyphs); return;
+ case 2: hb_barrier (); u.format2.collect_glyphs (glyphs); return;
+ case 4: hb_barrier (); u.format4.collect_glyphs (glyphs); return;
+ case 6: hb_barrier (); u.format6.collect_glyphs (glyphs); return;
+ case 8: hb_barrier (); u.format8.collect_glyphs (glyphs); return;
+ case 10: hb_barrier (); u.format10.collect_glyphs (glyphs); return;
default:return;
}
}
@@ -516,12 +516,12 @@ struct Lookup
if (!u.format.sanitize (c)) return_trace (false);
hb_barrier ();
switch (u.format) {
- case 0: return_trace (u.format0.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
- case 4: return_trace (u.format4.sanitize (c));
- case 6: return_trace (u.format6.sanitize (c));
- case 8: return_trace (u.format8.sanitize (c));
- case 10: return_trace (u.format10.sanitize (c));
+ case 0: hb_barrier (); return_trace (u.format0.sanitize (c));
+ case 2: hb_barrier (); return_trace (u.format2.sanitize (c));
+ case 4: hb_barrier (); return_trace (u.format4.sanitize (c));
+ case 6: hb_barrier (); return_trace (u.format6.sanitize (c));
+ case 8: hb_barrier (); return_trace (u.format8.sanitize (c));
+ case 10: hb_barrier (); return_trace (u.format10.sanitize (c));
default:return_trace (true);
}
}
@@ -531,11 +531,11 @@ struct Lookup
if (!u.format.sanitize (c)) return_trace (false);
hb_barrier ();
switch (u.format) {
- case 0: return_trace (u.format0.sanitize (c, base));
- case 2: return_trace (u.format2.sanitize (c, base));
- case 4: return_trace (u.format4.sanitize (c, base));
- case 6: return_trace (u.format6.sanitize (c, base));
- case 8: return_trace (u.format8.sanitize (c, base));
+ case 0: hb_barrier (); return_trace (u.format0.sanitize (c, base));
+ case 2: hb_barrier (); return_trace (u.format2.sanitize (c, base));
+ case 4: hb_barrier (); return_trace (u.format4.sanitize (c, base));
+ case 6: hb_barrier (); return_trace (u.format6.sanitize (c, base));
+ case 8: hb_barrier (); return_trace (u.format8.sanitize (c, base));
case 10: return_trace (false); /* We don't support format10 here currently. */
default:return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh
index ee08da172ea..9531b5e4b31 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh
@@ -189,12 +189,12 @@ struct ActionSubrecord
switch (u.header.actionType)
{
- case 0: return_trace (u.decompositionAction.sanitize (c));
- case 1: return_trace (u.unconditionalAddGlyphAction.sanitize (c));
- case 2: return_trace (u.conditionalAddGlyphAction.sanitize (c));
- // case 3: return_trace (u.stretchGlyphAction.sanitize (c));
- case 4: return_trace (u.decompositionAction.sanitize (c));
- case 5: return_trace (u.decompositionAction.sanitize (c));
+ case 0: hb_barrier (); return_trace (u.decompositionAction.sanitize (c));
+ case 1: hb_barrier (); return_trace (u.unconditionalAddGlyphAction.sanitize (c));
+ case 2: hb_barrier (); return_trace (u.conditionalAddGlyphAction.sanitize (c));
+ // case 3: hb_barrier (); return_trace (u.stretchGlyphAction.sanitize (c));
+ case 4: hb_barrier (); return_trace (u.decompositionAction.sanitize (c));
+ case 5: hb_barrier (); return_trace (u.decompositionAction.sanitize (c));
default: return_trace (true);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh
index 4a0f6da161c..d31834402ad 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh
@@ -1062,7 +1062,8 @@ struct ChainSubtable
bool apply (hb_aat_apply_context_t *c) const
{
TRACE_APPLY (this);
- hb_sanitize_with_object_t with (&c->sanitizer, this);
+ // Disabled for https://github.com/harfbuzz/harfbuzz/issues/4873
+ //hb_sanitize_with_object_t with (&c->sanitizer, this);
return_trace (dispatch (c));
}
@@ -1075,7 +1076,8 @@ struct ChainSubtable
c->check_range (this, length)))
return_trace (false);
- hb_sanitize_with_object_t with (c, this);
+ // Disabled for https://github.com/harfbuzz/harfbuzz/issues/4873
+ //hb_sanitize_with_object_t with (c, this);
return_trace (dispatch (c));
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh
index 9840d3a5541..dc75f5db57b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh
@@ -133,8 +133,8 @@ struct opbd
{
switch (format)
{
- case 0: return u.format0.get_bounds (font, glyph_id, extents, this);
- case 1: return u.format1.get_bounds (font, glyph_id, extents, this);
+ case 0: hb_barrier (); return u.format0.get_bounds (font, glyph_id, extents, this);
+ case 1: hb_barrier (); return u.format1.get_bounds (font, glyph_id, extents, this);
default:return false;
}
}
@@ -148,8 +148,8 @@ struct opbd
switch (format)
{
- case 0: return_trace (u.format0.sanitize (c, this));
- case 1: return_trace (u.format1.sanitize (c, this));
+ case 0: hb_barrier (); return_trace (u.format0.sanitize (c, this));
+ case 1: hb_barrier (); return_trace (u.format1.sanitize (c, this));
default:return_trace (true);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc
index 671d6eda8c9..345f08d260f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc
@@ -412,7 +412,7 @@ hb_buffer_t::verify (hb_buffer_t *text_buffer,
&len,
HB_BUFFER_SERIALIZE_FORMAT_TEXT,
HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS);
- buffer_verify_error (this, font, BUFFER_VERIFY_ERROR "text was: %s.", bytes.arrayZ);
+ buffer_verify_error (this, font, BUFFER_VERIFY_ERROR "text was: %s.", bytes.arrayZ ? bytes.arrayZ : "");
}
#endif
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
index d621a7cc55d..3fc869887e2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
@@ -271,6 +271,7 @@ hb_buffer_t::similar (const hb_buffer_t &src)
replacement = src.replacement;
invisible = src.invisible;
not_found = src.not_found;
+ not_found_variation_selector = src.not_found_variation_selector;
}
void
@@ -283,6 +284,7 @@ hb_buffer_t::reset ()
replacement = HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT;
invisible = 0;
not_found = 0;
+ not_found_variation_selector = HB_CODEPOINT_INVALID;
clear ();
}
@@ -705,6 +707,7 @@ DEFINE_NULL_INSTANCE (hb_buffer_t) =
HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT,
0, /* invisible */
0, /* not_found */
+ HB_CODEPOINT_INVALID, /* not_found_variation_selector */
HB_BUFFER_CONTENT_TYPE_INVALID,
@@ -1361,6 +1364,46 @@ hb_buffer_get_not_found_glyph (const hb_buffer_t *buffer)
}
/**
+ * hb_buffer_set_not_found_variation_selector_glyph:
+ * @buffer: An #hb_buffer_t
+ * @not_found_variation_selector: the not-found-variation-selector #hb_codepoint_t
+ *
+ * Sets the #hb_codepoint_t that replaces variation-selector characters not resolved
+ * in the font during shaping.
+ *
+ * The not-found-variation-selector glyph defaults to #HB_CODEPOINT_INVALID,
+ * in which case an unresolved variation-selector will be removed from the glyph
+ * string during shaping. This API allows for changing that and retaining a glyph,
+ * such that the situation can be detected by the client and handled accordingly
+ * (e.g. by using a different font).
+ *
+ * Since: 10.0.0
+ **/
+void
+hb_buffer_set_not_found_variation_selector_glyph (hb_buffer_t *buffer,
+ hb_codepoint_t not_found_variation_selector)
+{
+ buffer->not_found_variation_selector = not_found_variation_selector;
+}
+
+/**
+ * hb_buffer_get_not_found_variation_selector_glyph:
+ * @buffer: An #hb_buffer_t
+ *
+ * See hb_buffer_set_not_found_variation_selector_glyph().
+ *
+ * Return value:
+ * The @buffer not-found-variation-selector #hb_codepoint_t
+ *
+ * Since: 10.0.0
+ **/
+hb_codepoint_t
+hb_buffer_get_not_found_variation_selector_glyph (const hb_buffer_t *buffer)
+{
+ return buffer->not_found_variation_selector;
+}
+
+/**
* hb_buffer_set_random_state:
* @buffer: An #hb_buffer_t
* @state: the new random state
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h
index f75fe96b214..dd0edb9b7d7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h
@@ -488,6 +488,13 @@ HB_EXTERN hb_codepoint_t
hb_buffer_get_not_found_glyph (const hb_buffer_t *buffer);
HB_EXTERN void
+hb_buffer_set_not_found_variation_selector_glyph (hb_buffer_t *buffer,
+ hb_codepoint_t not_found_variation_selector);
+
+HB_EXTERN hb_codepoint_t
+hb_buffer_get_not_found_variation_selector_glyph (const hb_buffer_t *buffer);
+
+HB_EXTERN void
hb_buffer_set_random_state (hb_buffer_t *buffer,
unsigned state);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh
index 0a198722d62..2a6ad6128c8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh
@@ -52,6 +52,7 @@ enum hb_buffer_scratch_flags_t {
HB_BUFFER_SCRATCH_FLAG_HAS_CGJ = 0x00000010u,
HB_BUFFER_SCRATCH_FLAG_HAS_GLYPH_FLAGS = 0x00000020u,
HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE = 0x00000040u,
+ HB_BUFFER_SCRATCH_FLAG_HAS_VARIATION_SELECTOR_FALLBACK= 0x00000080u,
/* Reserved for shapers' internal use. */
HB_BUFFER_SCRATCH_FLAG_SHAPER0 = 0x01000000u,
@@ -80,6 +81,7 @@ struct hb_buffer_t
hb_codepoint_t replacement; /* U+FFFD or something else. */
hb_codepoint_t invisible; /* 0 or something else. */
hb_codepoint_t not_found; /* 0 or something else. */
+ hb_codepoint_t not_found_variation_selector; /* HB_CODEPOINT_INVALID or something else. */
/*
* Buffer contents
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh
index a08b10b5ff1..b513a1e8c23 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh
@@ -84,7 +84,7 @@ struct dict_opset_t : opset_t<number_t>
enum Nibble { DECIMAL=10, EXP_POS, EXP_NEG, RESERVED, NEG, END };
- char buf[32];
+ char buf[32] = {0};
unsigned char byte = 0;
for (unsigned i = 0, count = 0; count < ARRAY_LENGTH (buf); ++i, ++count)
{
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h
index 533de915627..11085454816 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h
@@ -504,6 +504,13 @@ hb_language_matches (hb_language_t language,
* @HB_SCRIPT_MATH: `Zmth`, Since: 3.4.0
* @HB_SCRIPT_KAWI: `Kawi`, Since: 5.2.0
* @HB_SCRIPT_NAG_MUNDARI: `Nagm`, Since: 5.2.0
+ * @HB_SCRIPT_GARAY: `Gara`, Since: 10.0.0
+ * @HB_SCRIPT_GURUNG_KHEMA: `Gukh`, Since: 10.0.0
+ * @HB_SCRIPT_KIRAT_RAI: `Krai`, Since: 10.0.0
+ * @HB_SCRIPT_OL_ONAL: `Onao`, Since: 10.0.0
+ * @HB_SCRIPT_SUNUWAR: `Sunu`, Since: 10.0.0
+ * @HB_SCRIPT_TODHRI: `Todr`, Since: 10.0.0
+ * @HB_SCRIPT_TULU_TIGALARI: `Tutg`, Since: 10.0.0
* @HB_SCRIPT_INVALID: No script set
*
* Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding
@@ -731,6 +738,17 @@ typedef enum
HB_SCRIPT_KAWI = HB_TAG ('K','a','w','i'), /*15.0*/
HB_SCRIPT_NAG_MUNDARI = HB_TAG ('N','a','g','m'), /*15.0*/
+ /*
+ * Since 10.0.0
+ */
+ HB_SCRIPT_GARAY = HB_TAG ('G','a','r','a'), /*16.0*/
+ HB_SCRIPT_GURUNG_KHEMA = HB_TAG ('G','u','k','h'), /*16.0*/
+ HB_SCRIPT_KIRAT_RAI = HB_TAG ('K','r','a','i'), /*16.0*/
+ HB_SCRIPT_OL_ONAL = HB_TAG ('O','n','a','o'), /*16.0*/
+ HB_SCRIPT_SUNUWAR = HB_TAG ('S','u','n','u'), /*16.0*/
+ HB_SCRIPT_TODHRI = HB_TAG ('T','o','d','r'), /*16.0*/
+ HB_SCRIPT_TULU_TIGALARI = HB_TAG ('T','u','t','g'), /*16.0*/
+
/* No script set. */
HB_SCRIPT_INVALID = HB_TAG_NONE,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
index a87cb5cd028..070b8be02fa 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
@@ -48,6 +48,8 @@
/* https://developer.apple.com/documentation/coretext/1508745-ctfontcreatewithgraphicsfont */
#define HB_CORETEXT_DEFAULT_FONT_SIZE 12.f
+static CTFontRef create_ct_font (CGFontRef cg_font, CGFloat font_size);
+
static void
release_table_data (void *user_data)
{
@@ -76,6 +78,52 @@ _hb_cg_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data
release_table_data);
}
+static unsigned
+_hb_cg_get_table_tags (const hb_face_t *face HB_UNUSED,
+ unsigned int start_offset,
+ unsigned int *table_count,
+ hb_tag_t *table_tags,
+ void *user_data)
+{
+ CGFontRef cg_font = reinterpret_cast<CGFontRef> (user_data);
+
+ CTFontRef ct_font = create_ct_font (cg_font, (CGFloat) HB_CORETEXT_DEFAULT_FONT_SIZE);
+
+ auto arr = CTFontCopyAvailableTables (ct_font, kCTFontTableOptionNoOptions);
+
+ unsigned population = (unsigned) CFArrayGetCount (arr);
+ unsigned end_offset;
+
+ if (!table_count)
+ goto done;
+
+ if (unlikely (start_offset >= population))
+ {
+ *table_count = 0;
+ goto done;
+ }
+
+ end_offset = start_offset + *table_count;
+ if (unlikely (end_offset < start_offset))
+ {
+ *table_count = 0;
+ goto done;
+ }
+ end_offset= hb_min (end_offset, (unsigned) population);
+
+ *table_count = end_offset - start_offset;
+ for (unsigned i = start_offset; i < end_offset; i++)
+ {
+ CTFontTableTag tag = (CTFontTableTag)(uintptr_t) CFArrayGetValueAtIndex (arr, i);
+ table_tags[i - start_offset] = tag;
+ }
+
+done:
+ CFRelease (arr);
+ CFRelease (ct_font);
+ return population;
+}
+
static void
_hb_cg_font_release (void *data)
{
@@ -294,7 +342,9 @@ _hb_coretext_shaper_face_data_destroy (hb_coretext_face_data_t *data)
hb_face_t *
hb_coretext_face_create (CGFontRef cg_font)
{
- return hb_face_create_for_tables (_hb_cg_reference_table, CGFontRetain (cg_font), _hb_cg_font_release);
+ hb_face_t *face = hb_face_create_for_tables (_hb_cg_reference_table, CGFontRetain (cg_font), _hb_cg_font_release);
+ hb_face_set_get_table_tags_func (face, _hb_cg_get_table_tags, cg_font, nullptr);
+ return face;
}
/**
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc
index 84b14d28d60..beea89ed22f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc
@@ -42,7 +42,7 @@
struct face_table_info_t
{
hb_blob_t* data;
- signed order;
+ unsigned order;
};
struct hb_face_builder_data_t
@@ -153,6 +153,50 @@ _hb_face_builder_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void
return hb_blob_reference (data->tables[tag].data);
}
+static unsigned
+_hb_face_builder_get_table_tags (const hb_face_t *face HB_UNUSED,
+ unsigned int start_offset,
+ unsigned int *table_count,
+ hb_tag_t *table_tags,
+ void *user_data)
+{
+ hb_face_builder_data_t *data = (hb_face_builder_data_t *) user_data;
+
+ unsigned population = data->tables.get_population ();
+
+ if (!table_count)
+ return population;
+
+ if (unlikely (start_offset >= population))
+ {
+ if (table_count)
+ *table_count = 0;
+ return population;
+ }
+
+ // Sort the tags.
+ hb_vector_t<hb_tag_t> sorted_tags;
+ data->tables.keys () | hb_sink (sorted_tags);
+ if (unlikely (sorted_tags.in_error ()))
+ {
+ // Not much to do...
+ }
+ sorted_tags.qsort ([] (const void* a, const void* b) {
+ return * (hb_tag_t *) a < * (hb_tag_t *) b ? -1 :
+ * (hb_tag_t *) a == * (hb_tag_t *) b ? 0 :
+ +1;
+ });
+
+ auto array = sorted_tags.as_array ().sub_array (start_offset, table_count);
+ auto out = hb_array (table_tags, *table_count);
+
+ + array.iter ()
+ | hb_sink (out)
+ ;
+
+ return population;
+}
+
/**
* hb_face_builder_create:
@@ -171,9 +215,16 @@ hb_face_builder_create ()
hb_face_builder_data_t *data = _hb_face_builder_data_create ();
if (unlikely (!data)) return hb_face_get_empty ();
- return hb_face_create_for_tables (_hb_face_builder_reference_table,
- data,
- _hb_face_builder_data_destroy);
+ hb_face_t *face = hb_face_create_for_tables (_hb_face_builder_reference_table,
+ data,
+ _hb_face_builder_data_destroy);
+
+ hb_face_set_get_table_tags_func (face,
+ _hb_face_builder_get_table_tags,
+ data,
+ nullptr);
+
+ return face;
}
/**
@@ -199,7 +250,7 @@ hb_face_builder_add_table (hb_face_t *face, hb_tag_t tag, hb_blob_t *blob)
hb_face_builder_data_t *data = (hb_face_builder_data_t *) face->user_data;
hb_blob_t* previous = data->tables.get (tag).data;
- if (!data->tables.set (tag, face_table_info_t {hb_blob_reference (blob), -1}))
+ if (!data->tables.set (tag, face_table_info_t {hb_blob_reference (blob), (unsigned) -1}))
{
hb_blob_destroy (blob);
return false;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc
index e340710586c..9b4af16f4d4 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc
@@ -90,10 +90,6 @@ DEFINE_NULL_INSTANCE (hb_face_t) =
{
HB_OBJECT_HEADER_STATIC,
- nullptr, /* reference_table_func */
- nullptr, /* user_data */
- nullptr, /* destroy */
-
0, /* index */
1000, /* upem */
0, /* num_glyphs */
@@ -110,8 +106,9 @@ DEFINE_NULL_INSTANCE (hb_face_t) =
*
* Variant of hb_face_create(), built for those cases where it is more
* convenient to provide data for individual tables instead of the whole font
- * data. With the caveat that hb_face_get_table_tags() does not currently work
- * with faces created this way.
+ * data. With the caveat that hb_face_get_table_tags() would not work
+ * with faces created this way. You can address that by calling the
+ * hb_face_set_get_table_tags_func() function and setting the appropriate callback.
*
* Creates a new face object from the specified @user_data and @reference_table_func,
* with the @destroy callback.
@@ -194,6 +191,22 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void
return blob;
}
+static unsigned
+_hb_face_for_data_get_table_tags (const hb_face_t *face HB_UNUSED,
+ unsigned int start_offset,
+ unsigned int *table_count,
+ hb_tag_t *table_tags,
+ void *user_data)
+{
+ hb_face_for_data_closure_t *data = (hb_face_for_data_closure_t *) user_data;
+
+ const OT::OpenTypeFontFile &ot_file = *data->blob->as<OT::OpenTypeFontFile> ();
+ const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index);
+
+ return ot_face.get_table_tags (start_offset, table_count, table_tags);
+}
+
+
/**
* hb_face_create:
* @blob: #hb_blob_t to work upon
@@ -240,6 +253,10 @@ hb_face_create (hb_blob_t *blob,
face = hb_face_create_for_tables (_hb_face_for_data_reference_table,
closure,
_hb_face_for_data_closure_destroy);
+ hb_face_set_get_table_tags_func (face,
+ _hb_face_for_data_get_table_tags,
+ closure,
+ nullptr);
face->index = index;
@@ -306,6 +323,9 @@ hb_face_destroy (hb_face_t *face)
face->data.fini ();
face->table.fini ();
+ if (face->get_table_tags_destroy)
+ face->get_table_tags_destroy (face->get_table_tags_user_data);
+
if (face->destroy)
face->destroy (face->user_data);
@@ -548,6 +568,37 @@ hb_face_get_glyph_count (const hb_face_t *face)
}
/**
+ * hb_face_set_get_table_tags_func:
+ * @face: A face object
+ * @func: (closure user_data) (destroy destroy) (scope notified): The table-tag-fetching function
+ * @user_data: A pointer to the user data, to be destroyed by @destroy when not needed anymore
+ * @destroy: (nullable): A callback to call when @func is not needed anymore
+ *
+ * Sets the table-tag-fetching function for the specified face object.
+ *
+ * Since: 10.0.0
+ */
+HB_EXTERN void
+hb_face_set_get_table_tags_func (hb_face_t *face,
+ hb_get_table_tags_func_t func,
+ void *user_data,
+ hb_destroy_func_t destroy)
+{
+ if (hb_object_is_immutable (face))
+ {
+ if (destroy)
+ destroy (user_data);
+ }
+
+ if (face->get_table_tags_destroy)
+ face->get_table_tags_destroy (face->get_table_tags_user_data);
+
+ face->get_table_tags_func = func;
+ face->get_table_tags_user_data = user_data;
+ face->get_table_tags_destroy = destroy;
+}
+
+/**
* hb_face_get_table_tags:
* @face: A face object
* @start_offset: The index of first table tag to retrieve
@@ -568,19 +619,14 @@ hb_face_get_table_tags (const hb_face_t *face,
unsigned int *table_count, /* IN/OUT */
hb_tag_t *table_tags /* OUT */)
{
- if (face->destroy != (hb_destroy_func_t) _hb_face_for_data_closure_destroy)
+ if (!face->get_table_tags_func)
{
if (table_count)
*table_count = 0;
return 0;
}
- hb_face_for_data_closure_t *data = (hb_face_for_data_closure_t *) face->user_data;
-
- const OT::OpenTypeFontFile &ot_file = *data->blob->as<OT::OpenTypeFontFile> ();
- const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index);
-
- return ot_face.get_table_tags (start_offset, table_count, table_tags);
+ return face->get_table_tags_func (face, start_offset, table_count, table_tags, face->get_table_tags_user_data);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h
index 2e54ccf13b7..98d0afec267 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h
@@ -135,6 +135,34 @@ hb_face_set_glyph_count (hb_face_t *face,
HB_EXTERN unsigned int
hb_face_get_glyph_count (const hb_face_t *face);
+
+/**
+ * hb_get_table_tags_func_t:
+ * @face: A face object
+ * @start_offset: The index of first table tag to retrieve
+ * @table_count: (inout): Input = the maximum number of table tags to return;
+ * Output = the actual number of table tags returned (may be zero)
+ * @table_tags: (out) (array length=table_count): The array of table tags found
+ * @user_data: User data pointer passed by the caller
+ *
+ * Callback function for hb_face_get_table_tags().
+ *
+ * Return value: Total number of tables, or zero if it is not possible to list
+ *
+ * Since: 10.0.0
+ */
+typedef unsigned int (*hb_get_table_tags_func_t) (const hb_face_t *face,
+ unsigned int start_offset,
+ unsigned int *table_count, /* IN/OUT */
+ hb_tag_t *table_tags /* OUT */,
+ void *user_data);
+
+HB_EXTERN void
+hb_face_set_get_table_tags_func (hb_face_t *face,
+ hb_get_table_tags_func_t func,
+ void *user_data,
+ hb_destroy_func_t destroy);
+
HB_EXTERN unsigned int
hb_face_get_table_tags (const hb_face_t *face,
unsigned int start_offset,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh
index aff3ff0d07c..6401568326b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh
@@ -48,13 +48,17 @@ struct hb_face_t
{
hb_object_header_t header;
+ unsigned int index; /* Face index in a collection, zero-based. */
+ mutable hb_atomic_int_t upem; /* Units-per-EM. */
+ mutable hb_atomic_int_t num_glyphs; /* Number of glyphs. */
+
hb_reference_table_func_t reference_table_func;
void *user_data;
hb_destroy_func_t destroy;
- unsigned int index; /* Face index in a collection, zero-based. */
- mutable hb_atomic_int_t upem; /* Units-per-EM. */
- mutable hb_atomic_int_t num_glyphs; /* Number of glyphs. */
+ hb_get_table_tags_func_t get_table_tags_func;
+ void *get_table_tags_user_data;
+ hb_destroy_func_t get_table_tags_destroy;
hb_shaper_object_dataset_t<hb_face_t> data;/* Various shaper data. */
hb_ot_face_t table; /* All the face's tables. */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
index 3de4a6d5d41..f6d8bf4136a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
@@ -1104,6 +1104,45 @@ _hb_ft_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data
buffer, hb_free);
}
+static unsigned
+_hb_ft_get_table_tags (const hb_face_t *face HB_UNUSED,
+ unsigned int start_offset,
+ unsigned int *table_count,
+ hb_tag_t *table_tags,
+ void *user_data)
+{
+ FT_Face ft_face = (FT_Face) user_data;
+
+ FT_ULong population = 0;
+ FT_Sfnt_Table_Info (ft_face,
+ 0, // table_index; ignored
+ nullptr,
+ &population);
+
+ if (!table_count)
+ return population;
+ else
+ *table_count = 0;
+
+ if (unlikely (start_offset >= population))
+ return population;
+
+ unsigned end_offset = hb_min (start_offset + *table_count, (unsigned) population);
+ if (unlikely (end_offset < start_offset))
+ return population;
+
+ *table_count = end_offset - start_offset;
+ for (unsigned i = start_offset; i < end_offset; i++)
+ {
+ FT_ULong tag = 0, length;
+ FT_Sfnt_Table_Info (ft_face, i, &tag, &length);
+ table_tags[i - start_offset] = tag;
+ }
+
+ return population;
+}
+
+
/**
* hb_ft_face_create:
* @ft_face: (destroy destroy) (scope notified): FT_Face to work upon
@@ -1145,6 +1184,7 @@ hb_ft_face_create (FT_Face ft_face,
hb_blob_destroy (blob);
} else {
face = hb_face_create_for_tables (_hb_ft_reference_table, ft_face, destroy);
+ hb_face_set_get_table_tags_func (face, _hb_ft_get_table_tags, ft_face, nullptr);
}
hb_face_set_index (face, ft_face->face_index);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh
index 1157ea46d0d..6c98226f21a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh
@@ -250,7 +250,7 @@ struct TTCHeader
{
switch (u.header.version.major) {
case 2: /* version 2 is compatible with version 1 */
- case 1: return u.version1.get_face_count ();
+ case 1: hb_barrier (); return u.version1.get_face_count ();
default:return 0;
}
}
@@ -258,7 +258,7 @@ struct TTCHeader
{
switch (u.header.version.major) {
case 2: /* version 2 is compatible with version 1 */
- case 1: return u.version1.get_face (i);
+ case 1: hb_barrier (); return u.version1.get_face (i);
default:return Null (OpenTypeFontFace);
}
}
@@ -270,7 +270,7 @@ struct TTCHeader
hb_barrier ();
switch (u.header.version.major) {
case 2: /* version 2 is compatible with version 1 */
- case 1: return_trace (u.version1.sanitize (c));
+ case 1: hb_barrier (); return_trace (u.version1.sanitize (c));
default:return_trace (true);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
index 642332cb902..6655259b7a3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
@@ -209,7 +209,7 @@ struct HBUINT32VAR
}
protected:
- unsigned char v[1];
+ unsigned char v[5];
public:
DEFINE_SIZE_MIN (1);
@@ -654,7 +654,7 @@ struct UnsizedListOfOffset16To : UnsizedArray16OfOffsetTo<Type, OffsetType, Base
unsigned int i = (unsigned int) i_;
const OffsetTo<Type, OffsetType, BaseType, has_null> *p = &this->arrayZ[i];
if (unlikely ((const void *) p < (const void *) this->arrayZ)) return Null (Type); /* Overflowed. */
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return this+*p;
}
Type& operator [] (int i_)
@@ -662,7 +662,7 @@ struct UnsizedListOfOffset16To : UnsizedArray16OfOffsetTo<Type, OffsetType, Base
unsigned int i = (unsigned int) i_;
const OffsetTo<Type, OffsetType, BaseType, has_null> *p = &this->arrayZ[i];
if (unlikely ((const void *) p < (const void *) this->arrayZ)) return Crap (Type); /* Overflowed. */
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return this+*p;
}
@@ -713,14 +713,14 @@ struct ArrayOf
{
unsigned int i = (unsigned int) i_;
if (unlikely (i >= len)) return Null (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return arrayZ[i];
}
Type& operator [] (int i_)
{
unsigned int i = (unsigned int) i_;
if (unlikely (i >= len)) return Crap (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return arrayZ[i];
}
@@ -853,14 +853,14 @@ struct List16OfOffsetTo : ArrayOf<OffsetTo<Type, OffsetType>, HBUINT16>
{
unsigned int i = (unsigned int) i_;
if (unlikely (i >= this->len)) return Null (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return this+this->arrayZ[i];
}
const Type& operator [] (int i_)
{
unsigned int i = (unsigned int) i_;
if (unlikely (i >= this->len)) return Crap (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return this+this->arrayZ[i];
}
@@ -898,14 +898,14 @@ struct HeadlessArrayOf
{
unsigned int i = (unsigned int) i_;
if (unlikely (i >= lenP1 || !i)) return Null (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return arrayZ[i-1];
}
Type& operator [] (int i_)
{
unsigned int i = (unsigned int) i_;
if (unlikely (i >= lenP1 || !i)) return Crap (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return arrayZ[i-1];
}
unsigned int get_size () const
@@ -992,14 +992,14 @@ struct ArrayOfM1
{
unsigned int i = (unsigned int) i_;
if (unlikely (i > lenM1)) return Null (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return arrayZ[i];
}
Type& operator [] (int i_)
{
unsigned int i = (unsigned int) i_;
if (unlikely (i > lenM1)) return Crap (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return arrayZ[i];
}
unsigned int get_size () const
@@ -1184,14 +1184,14 @@ struct VarSizedBinSearchArrayOf
{
unsigned int i = (unsigned int) i_;
if (unlikely (i >= get_length ())) return Null (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return StructAtOffset<Type> (&bytesZ, i * header.unitSize);
}
Type& operator [] (int i_)
{
unsigned int i = (unsigned int) i_;
if (unlikely (i >= get_length ())) return Crap (Type);
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return StructAtOffset<Type> (&bytesZ, i * header.unitSize);
}
unsigned int get_length () const
@@ -1441,7 +1441,7 @@ struct CFFIndex
hb_ubytes_t operator [] (unsigned int index) const
{
if (unlikely (index >= count)) return hb_ubytes_t ();
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
unsigned offset0 = offset_at (index);
unsigned offset1 = offset_at (index + 1);
if (unlikely (offset1 < offset0 || offset1 > offset_at (count)))
@@ -1496,7 +1496,7 @@ struct TupleValues
};
static unsigned compile (hb_array_t<const int> values, /* IN */
- hb_array_t<char> encoded_bytes /* OUT */)
+ hb_array_t<unsigned char> encoded_bytes /* OUT */)
{
unsigned num_values = values.length;
unsigned encoded_len = 0;
@@ -1517,7 +1517,7 @@ struct TupleValues
}
static unsigned encode_value_run_as_zeroes (unsigned& i,
- hb_array_t<char> encoded_bytes,
+ hb_array_t<unsigned char> encoded_bytes,
hb_array_t<const int> values)
{
unsigned num_values = values.length;
@@ -1546,7 +1546,7 @@ struct TupleValues
}
static unsigned encode_value_run_as_bytes (unsigned &i,
- hb_array_t<char> encoded_bytes,
+ hb_array_t<unsigned char> encoded_bytes,
hb_array_t<const int> values)
{
unsigned start = i;
@@ -1600,7 +1600,7 @@ struct TupleValues
}
static unsigned encode_value_run_as_words (unsigned &i,
- hb_array_t<char> encoded_bytes,
+ hb_array_t<unsigned char> encoded_bytes,
hb_array_t<const int> values)
{
unsigned start = i;
@@ -1661,7 +1661,7 @@ struct TupleValues
}
static unsigned encode_value_run_as_longs (unsigned &i,
- hb_array_t<char> encoded_bytes,
+ hb_array_t<unsigned char> encoded_bytes,
hb_array_t<const int> values)
{
unsigned start = i;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh
index 15f27883882..b49c0be5171 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh
@@ -308,8 +308,8 @@ struct FDSelect
{
switch (format)
{
- case 0: return format.static_size + u.format0.get_size (num_glyphs);
- case 3: return format.static_size + u.format3.get_size ();
+ case 0: hb_barrier (); return format.static_size + u.format0.get_size (num_glyphs);
+ case 3: hb_barrier (); return format.static_size + u.format3.get_size ();
default:return 0;
}
}
@@ -320,8 +320,8 @@ struct FDSelect
switch (format)
{
- case 0: return u.format0.get_fd (glyph);
- case 3: return u.format3.get_fd (glyph);
+ case 0: hb_barrier (); return u.format0.get_fd (glyph);
+ case 3: hb_barrier (); return u.format3.get_fd (glyph);
default:return 0;
}
}
@@ -332,8 +332,8 @@ struct FDSelect
switch (format)
{
- case 0: return u.format0.get_fd_range (glyph);
- case 3: return u.format3.get_fd_range (glyph);
+ case 0: hb_barrier (); return u.format0.get_fd_range (glyph);
+ case 3: hb_barrier (); return u.format3.get_fd_range (glyph);
default:return {0, 1};
}
}
@@ -347,8 +347,8 @@ struct FDSelect
switch (format)
{
- case 0: return_trace (u.format0.sanitize (c, fdcount));
- case 3: return_trace (u.format3.sanitize (c, fdcount));
+ case 0: hb_barrier (); return_trace (u.format0.sanitize (c, fdcount));
+ case 3: hb_barrier (); return_trace (u.format3.sanitize (c, fdcount));
default:return_trace (false);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh
index bb4b204c977..b84d896e3ee 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh
@@ -239,8 +239,8 @@ struct Encoding
unsigned int size = min_size;
switch (table_format ())
{
- case 0: size += u.format0.get_size (); break;
- case 1: size += u.format1.get_size (); break;
+ case 0: hb_barrier (); size += u.format0.get_size (); break;
+ case 1: hb_barrier (); size += u.format1.get_size (); break;
}
if (has_supplement ())
size += suppEncData ().get_size ();
@@ -251,8 +251,8 @@ struct Encoding
{
switch (table_format ())
{
- case 0: return u.format0.get_code (glyph);
- case 1: return u.format1.get_code (glyph);
+ case 0: hb_barrier (); return u.format0.get_code (glyph);
+ case 1: hb_barrier (); return u.format1.get_code (glyph);
default:return 0;
}
}
@@ -276,8 +276,8 @@ struct Encoding
switch (table_format ())
{
- case 0: if (unlikely (!u.format0.sanitize (c))) { return_trace (false); } break;
- case 1: if (unlikely (!u.format1.sanitize (c))) { return_trace (false); } break;
+ case 0: hb_barrier (); if (unlikely (!u.format0.sanitize (c))) { return_trace (false); } break;
+ case 1: hb_barrier (); if (unlikely (!u.format1.sanitize (c))) { return_trace (false); } break;
default:return_trace (false);
}
return_trace (likely (!has_supplement () || suppEncData ().sanitize (c)));
@@ -288,8 +288,8 @@ struct Encoding
{
switch (table_format ())
{
- case 0: return StructAfter<CFF1SuppEncData> (u.format0.codes[u.format0.nCodes ()-1]);
- case 1: return StructAfter<CFF1SuppEncData> (u.format1.ranges[u.format1.nRanges ()-1]);
+ case 0: hb_barrier (); return StructAfter<CFF1SuppEncData> (u.format0.codes[u.format0.nCodes ()-1]);
+ case 1: hb_barrier (); return StructAfter<CFF1SuppEncData> (u.format1.ranges[u.format1.nRanges ()-1]);
default:return Null (CFF1SuppEncData);
}
}
@@ -567,9 +567,9 @@ struct Charset
{
switch (format)
{
- case 0: return min_size + u.format0.get_size (num_glyphs);
- case 1: return min_size + u.format1.get_size (num_glyphs);
- case 2: return min_size + u.format2.get_size (num_glyphs);
+ case 0: hb_barrier (); return min_size + u.format0.get_size (num_glyphs);
+ case 1: hb_barrier (); return min_size + u.format1.get_size (num_glyphs);
+ case 2: hb_barrier (); return min_size + u.format2.get_size (num_glyphs);
default:return 0;
}
}
@@ -579,9 +579,9 @@ struct Charset
{
switch (format)
{
- case 0: return u.format0.get_sid (glyph, num_glyphs);
- case 1: return u.format1.get_sid (glyph, num_glyphs, cache);
- case 2: return u.format2.get_sid (glyph, num_glyphs, cache);
+ case 0: hb_barrier (); return u.format0.get_sid (glyph, num_glyphs);
+ case 1: hb_barrier (); return u.format1.get_sid (glyph, num_glyphs, cache);
+ case 2: hb_barrier (); return u.format2.get_sid (glyph, num_glyphs, cache);
default:return 0;
}
}
@@ -590,9 +590,9 @@ struct Charset
{
switch (format)
{
- case 0: u.format0.collect_glyph_to_sid_map (mapping, num_glyphs); return;
- case 1: u.format1.collect_glyph_to_sid_map (mapping, num_glyphs); return;
- case 2: u.format2.collect_glyph_to_sid_map (mapping, num_glyphs); return;
+ case 0: hb_barrier (); u.format0.collect_glyph_to_sid_map (mapping, num_glyphs); return;
+ case 1: hb_barrier (); u.format1.collect_glyph_to_sid_map (mapping, num_glyphs); return;
+ case 2: hb_barrier (); u.format2.collect_glyph_to_sid_map (mapping, num_glyphs); return;
default:return;
}
}
@@ -601,9 +601,9 @@ struct Charset
{
switch (format)
{
- case 0: return u.format0.get_glyph (sid, num_glyphs);
- case 1: return u.format1.get_glyph (sid, num_glyphs);
- case 2: return u.format2.get_glyph (sid, num_glyphs);
+ case 0: hb_barrier (); return u.format0.get_glyph (sid, num_glyphs);
+ case 1: hb_barrier (); return u.format1.get_glyph (sid, num_glyphs);
+ case 2: hb_barrier (); return u.format2.get_glyph (sid, num_glyphs);
default:return 0;
}
}
@@ -617,9 +617,9 @@ struct Charset
switch (format)
{
- case 0: return_trace (u.format0.sanitize (c, c->get_num_glyphs (), num_charset_entries));
- case 1: return_trace (u.format1.sanitize (c, c->get_num_glyphs (), num_charset_entries));
- case 2: return_trace (u.format2.sanitize (c, c->get_num_glyphs (), num_charset_entries));
+ case 0: hb_barrier (); return_trace (u.format0.sanitize (c, c->get_num_glyphs (), num_charset_entries));
+ case 1: hb_barrier (); return_trace (u.format1.sanitize (c, c->get_num_glyphs (), num_charset_entries));
+ case 2: hb_barrier (); return_trace (u.format2.sanitize (c, c->get_num_glyphs (), num_charset_entries));
default:return_trace (false);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh
index 94804b70eb5..c52c0511c67 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh
@@ -62,9 +62,9 @@ struct CFF2FDSelect
{
switch (format)
{
- case 0: return format.static_size + u.format0.get_size (num_glyphs);
- case 3: return format.static_size + u.format3.get_size ();
- case 4: return format.static_size + u.format4.get_size ();
+ case 0: hb_barrier (); return format.static_size + u.format0.get_size (num_glyphs);
+ case 3: hb_barrier (); return format.static_size + u.format3.get_size ();
+ case 4: hb_barrier (); return format.static_size + u.format4.get_size ();
default:return 0;
}
}
@@ -76,9 +76,9 @@ struct CFF2FDSelect
switch (format)
{
- case 0: return u.format0.get_fd (glyph);
- case 3: return u.format3.get_fd (glyph);
- case 4: return u.format4.get_fd (glyph);
+ case 0: hb_barrier (); return u.format0.get_fd (glyph);
+ case 3: hb_barrier (); return u.format3.get_fd (glyph);
+ case 4: hb_barrier (); return u.format4.get_fd (glyph);
default:return 0;
}
}
@@ -92,9 +92,9 @@ struct CFF2FDSelect
switch (format)
{
- case 0: return_trace (u.format0.sanitize (c, fdcount));
- case 3: return_trace (u.format3.sanitize (c, fdcount));
- case 4: return_trace (u.format4.sanitize (c, fdcount));
+ case 0: hb_barrier (); return_trace (u.format0.sanitize (c, fdcount));
+ case 3: hb_barrier (); return_trace (u.format3.sanitize (c, fdcount));
+ case 4: hb_barrier (); return_trace (u.format4.sanitize (c, fdcount));
default:return_trace (false);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh
index 64d2b138804..0f1edce0b0d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh
@@ -43,27 +43,145 @@ namespace OT {
static inline uint8_t unicode_to_macroman (hb_codepoint_t u)
{
- uint16_t mapping[] = {
- 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1,
- 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8,
- 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3,
- 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC,
- 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF,
- 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8,
- 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211,
- 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8,
- 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB,
- 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153,
- 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA,
- 0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02,
- 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1,
- 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4,
- 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC,
- 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7
+ static const struct unicode_to_macroman_t
+ {
+ uint16_t unicode;
+ uint8_t macroman;
+ }
+ mapping[] =
+ {
+ { 0x00A0, 0xCA },
+ { 0x00A1, 0xC1 },
+ { 0x00A2, 0xA2 },
+ { 0x00A3, 0xA3 },
+ { 0x00A5, 0xB4 },
+ { 0x00A7, 0xA4 },
+ { 0x00A8, 0xAC },
+ { 0x00A9, 0xA9 },
+ { 0x00AA, 0xBB },
+ { 0x00AB, 0xC7 },
+ { 0x00AC, 0xC2 },
+ { 0x00AE, 0xA8 },
+ { 0x00AF, 0xF8 },
+ { 0x00B0, 0xA1 },
+ { 0x00B1, 0xB1 },
+ { 0x00B4, 0xAB },
+ { 0x00B5, 0xB5 },
+ { 0x00B6, 0xA6 },
+ { 0x00B7, 0xE1 },
+ { 0x00B8, 0xFC },
+ { 0x00BA, 0xBC },
+ { 0x00BB, 0xC8 },
+ { 0x00BF, 0xC0 },
+ { 0x00C0, 0xCB },
+ { 0x00C1, 0xE7 },
+ { 0x00C2, 0xE5 },
+ { 0x00C3, 0xCC },
+ { 0x00C4, 0x80 },
+ { 0x00C5, 0x81 },
+ { 0x00C6, 0xAE },
+ { 0x00C7, 0x82 },
+ { 0x00C8, 0xE9 },
+ { 0x00C9, 0x83 },
+ { 0x00CA, 0xE6 },
+ { 0x00CB, 0xE8 },
+ { 0x00CC, 0xED },
+ { 0x00CD, 0xEA },
+ { 0x00CE, 0xEB },
+ { 0x00CF, 0xEC },
+ { 0x00D1, 0x84 },
+ { 0x00D2, 0xF1 },
+ { 0x00D3, 0xEE },
+ { 0x00D4, 0xEF },
+ { 0x00D5, 0xCD },
+ { 0x00D6, 0x85 },
+ { 0x00D8, 0xAF },
+ { 0x00D9, 0xF4 },
+ { 0x00DA, 0xF2 },
+ { 0x00DB, 0xF3 },
+ { 0x00DC, 0x86 },
+ { 0x00DF, 0xA7 },
+ { 0x00E0, 0x88 },
+ { 0x00E1, 0x87 },
+ { 0x00E2, 0x89 },
+ { 0x00E3, 0x8B },
+ { 0x00E4, 0x8A },
+ { 0x00E5, 0x8C },
+ { 0x00E6, 0xBE },
+ { 0x00E7, 0x8D },
+ { 0x00E8, 0x8F },
+ { 0x00E9, 0x8E },
+ { 0x00EA, 0x90 },
+ { 0x00EB, 0x91 },
+ { 0x00EC, 0x93 },
+ { 0x00ED, 0x92 },
+ { 0x00EE, 0x94 },
+ { 0x00EF, 0x95 },
+ { 0x00F1, 0x96 },
+ { 0x00F2, 0x98 },
+ { 0x00F3, 0x97 },
+ { 0x00F4, 0x99 },
+ { 0x00F5, 0x9B },
+ { 0x00F6, 0x9A },
+ { 0x00F7, 0xD6 },
+ { 0x00F8, 0xBF },
+ { 0x00F9, 0x9D },
+ { 0x00FA, 0x9C },
+ { 0x00FB, 0x9E },
+ { 0x00FC, 0x9F },
+ { 0x00FF, 0xD8 },
+ { 0x0131, 0xF5 },
+ { 0x0152, 0xCE },
+ { 0x0153, 0xCF },
+ { 0x0178, 0xD9 },
+ { 0x0192, 0xC4 },
+ { 0x02C6, 0xF6 },
+ { 0x02C7, 0xFF },
+ { 0x02D8, 0xF9 },
+ { 0x02D9, 0xFA },
+ { 0x02DA, 0xFB },
+ { 0x02DB, 0xFE },
+ { 0x02DC, 0xF7 },
+ { 0x02DD, 0xFD },
+ { 0x03A9, 0xBD },
+ { 0x03C0, 0xB9 },
+ { 0x2013, 0xD0 },
+ { 0x2014, 0xD1 },
+ { 0x2018, 0xD4 },
+ { 0x2019, 0xD5 },
+ { 0x201A, 0xE2 },
+ { 0x201C, 0xD2 },
+ { 0x201D, 0xD3 },
+ { 0x201E, 0xE3 },
+ { 0x2020, 0xA0 },
+ { 0x2021, 0xE0 },
+ { 0x2022, 0xA5 },
+ { 0x2026, 0xC9 },
+ { 0x2030, 0xE4 },
+ { 0x2039, 0xDC },
+ { 0x203A, 0xDD },
+ { 0x2044, 0xDA },
+ { 0x20AC, 0xDB },
+ { 0x2122, 0xAA },
+ { 0x2202, 0xB6 },
+ { 0x2206, 0xC6 },
+ { 0x220F, 0xB8 },
+ { 0x2211, 0xB7 },
+ { 0x221A, 0xC3 },
+ { 0x221E, 0xB0 },
+ { 0x222B, 0xBA },
+ { 0x2248, 0xC5 },
+ { 0x2260, 0xAD },
+ { 0x2264, 0xB2 },
+ { 0x2265, 0xB3 },
+ { 0x25CA, 0xD7 },
+ { 0xF8FF, 0xF0 },
+ { 0xFB01, 0xDE },
+ { 0xFB02, 0xDF },
};
- uint16_t *c = hb_bsearch (u, mapping, ARRAY_LENGTH (mapping), sizeof (mapping[0]),
- _hb_cmp_operator<uint16_t, uint16_t>);
- return c ? (c - mapping) + 0x7F : 0;
+ auto *c = hb_bsearch (u, mapping, ARRAY_LENGTH (mapping), sizeof (mapping[0]),
+ _hb_cmp_operator<uint16_t, uint16_t>);
+ return c ? c->macroman : 0;
}
struct CmapSubtableFormat0
@@ -1379,12 +1497,12 @@ struct CmapSubtable
hb_codepoint_t *glyph) const
{
switch (u.format) {
- case 0: return u.format0 .get_glyph (codepoint, glyph);
- case 4: return u.format4 .get_glyph (codepoint, glyph);
- case 6: return u.format6 .get_glyph (codepoint, glyph);
- case 10: return u.format10.get_glyph (codepoint, glyph);
- case 12: return u.format12.get_glyph (codepoint, glyph);
- case 13: return u.format13.get_glyph (codepoint, glyph);
+ case 0: hb_barrier (); return u.format0 .get_glyph (codepoint, glyph);
+ case 4: hb_barrier (); return u.format4 .get_glyph (codepoint, glyph);
+ case 6: hb_barrier (); return u.format6 .get_glyph (codepoint, glyph);
+ case 10: hb_barrier (); return u.format10.get_glyph (codepoint, glyph);
+ case 12: hb_barrier (); return u.format12.get_glyph (codepoint, glyph);
+ case 13: hb_barrier (); return u.format13.get_glyph (codepoint, glyph);
case 14:
default: return false;
}
@@ -1392,12 +1510,12 @@ struct CmapSubtable
void collect_unicodes (hb_set_t *out, unsigned int num_glyphs = UINT_MAX) const
{
switch (u.format) {
- case 0: u.format0 .collect_unicodes (out); return;
- case 4: u.format4 .collect_unicodes (out); return;
- case 6: u.format6 .collect_unicodes (out); return;
- case 10: u.format10.collect_unicodes (out); return;
- case 12: u.format12.collect_unicodes (out, num_glyphs); return;
- case 13: u.format13.collect_unicodes (out, num_glyphs); return;
+ case 0: hb_barrier (); u.format0 .collect_unicodes (out); return;
+ case 4: hb_barrier (); u.format4 .collect_unicodes (out); return;
+ case 6: hb_barrier (); u.format6 .collect_unicodes (out); return;
+ case 10: hb_barrier (); u.format10.collect_unicodes (out); return;
+ case 12: hb_barrier (); u.format12.collect_unicodes (out, num_glyphs); return;
+ case 13: hb_barrier (); u.format13.collect_unicodes (out, num_glyphs); return;
case 14:
default: return;
}
@@ -1408,12 +1526,12 @@ struct CmapSubtable
unsigned num_glyphs = UINT_MAX) const
{
switch (u.format) {
- case 0: u.format0 .collect_mapping (unicodes, mapping); return;
- case 4: u.format4 .collect_mapping (unicodes, mapping); return;
- case 6: u.format6 .collect_mapping (unicodes, mapping); return;
- case 10: u.format10.collect_mapping (unicodes, mapping); return;
- case 12: u.format12.collect_mapping (unicodes, mapping, num_glyphs); return;
- case 13: u.format13.collect_mapping (unicodes, mapping, num_glyphs); return;
+ case 0: hb_barrier (); u.format0 .collect_mapping (unicodes, mapping); return;
+ case 4: hb_barrier (); u.format4 .collect_mapping (unicodes, mapping); return;
+ case 6: hb_barrier (); u.format6 .collect_mapping (unicodes, mapping); return;
+ case 10: hb_barrier (); u.format10.collect_mapping (unicodes, mapping); return;
+ case 12: hb_barrier (); u.format12.collect_mapping (unicodes, mapping, num_glyphs); return;
+ case 13: hb_barrier (); u.format13.collect_mapping (unicodes, mapping, num_glyphs); return;
case 14:
default: return;
}
@@ -1422,12 +1540,12 @@ struct CmapSubtable
unsigned get_language () const
{
switch (u.format) {
- case 0: return u.format0 .get_language ();
- case 4: return u.format4 .get_language ();
- case 6: return u.format6 .get_language ();
- case 10: return u.format10.get_language ();
- case 12: return u.format12.get_language ();
- case 13: return u.format13.get_language ();
+ case 0: hb_barrier (); return u.format0 .get_language ();
+ case 4: hb_barrier (); return u.format4 .get_language ();
+ case 6: hb_barrier (); return u.format6 .get_language ();
+ case 10: hb_barrier (); return u.format10.get_language ();
+ case 12: hb_barrier (); return u.format12.get_language ();
+ case 13: hb_barrier (); return u.format13.get_language ();
case 14:
default: return 0;
}
@@ -1442,9 +1560,9 @@ struct CmapSubtable
const void *base)
{
switch (format) {
- case 4: return u.format4.serialize (c, it);
- case 12: return u.format12.serialize (c, it);
- case 14: return u.format14.serialize (c, &plan->unicodes, &plan->glyphs_requested, plan->glyph_map, base);
+ case 4: hb_barrier (); return u.format4.serialize (c, it);
+ case 12: hb_barrier (); return u.format12.serialize (c, it);
+ case 14: hb_barrier (); return u.format14.serialize (c, &plan->unicodes, &plan->glyphs_requested, plan->glyph_map, base);
default: return;
}
}
@@ -1455,13 +1573,13 @@ struct CmapSubtable
if (!u.format.sanitize (c)) return_trace (false);
hb_barrier ();
switch (u.format) {
- case 0: return_trace (u.format0 .sanitize (c));
- case 4: return_trace (u.format4 .sanitize (c));
- case 6: return_trace (u.format6 .sanitize (c));
- case 10: return_trace (u.format10.sanitize (c));
- case 12: return_trace (u.format12.sanitize (c));
- case 13: return_trace (u.format13.sanitize (c));
- case 14: return_trace (u.format14.sanitize (c));
+ case 0: hb_barrier (); return_trace (u.format0 .sanitize (c));
+ case 4: hb_barrier (); return_trace (u.format4 .sanitize (c));
+ case 6: hb_barrier (); return_trace (u.format6 .sanitize (c));
+ case 10: hb_barrier (); return_trace (u.format10.sanitize (c));
+ case 12: hb_barrier (); return_trace (u.format12.sanitize (c));
+ case 13: hb_barrier (); return_trace (u.format13.sanitize (c));
+ case 14: hb_barrier (); return_trace (u.format14.sanitize (c));
default:return_trace (true);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh
index b87ac8f4947..2abda78af84 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh
@@ -132,7 +132,7 @@ struct KernSubTable
{
switch (get_type ()) {
/* This method hooks up to hb_font_t's get_h_kerning. Only support Format0. */
- case 0: return u.format0.get_kerning (left, right);
+ case 0: hb_barrier (); return u.format0.get_kerning (left, right);
default:return 0;
}
}
@@ -311,9 +311,9 @@ struct kern
bool has_state_machine () const
{
switch (get_type ()) {
- case 0: return u.ot.has_state_machine ();
+ case 0: hb_barrier (); return u.ot.has_state_machine ();
#ifndef HB_NO_AAT_SHAPE
- case 1: return u.aat.has_state_machine ();
+ case 1: hb_barrier (); return u.aat.has_state_machine ();
#endif
default:return false;
}
@@ -322,9 +322,9 @@ struct kern
bool has_cross_stream () const
{
switch (get_type ()) {
- case 0: return u.ot.has_cross_stream ();
+ case 0: hb_barrier (); return u.ot.has_cross_stream ();
#ifndef HB_NO_AAT_SHAPE
- case 1: return u.aat.has_cross_stream ();
+ case 1: hb_barrier (); return u.aat.has_cross_stream ();
#endif
default:return false;
}
@@ -333,9 +333,9 @@ struct kern
int get_h_kerning (hb_codepoint_t left, hb_codepoint_t right) const
{
switch (get_type ()) {
- case 0: return u.ot.get_h_kerning (left, right);
+ case 0: hb_barrier (); return u.ot.get_h_kerning (left, right);
#ifndef HB_NO_AAT_SHAPE
- case 1: return u.aat.get_h_kerning (left, right);
+ case 1: hb_barrier (); return u.aat.get_h_kerning (left, right);
#endif
default:return 0;
}
@@ -370,9 +370,9 @@ struct kern
AAT::kern_accelerator_data_t create_accelerator_data (unsigned num_glyphs) const
{
switch (get_type ()) {
- case 0: return u.ot.create_accelerator_data (num_glyphs);
+ case 0: hb_barrier (); return u.ot.create_accelerator_data (num_glyphs);
#ifndef HB_NO_AAT_SHAPE
- case 1: return u.aat.create_accelerator_data (num_glyphs);
+ case 1: hb_barrier (); return u.aat.create_accelerator_data (num_glyphs);
#endif
default:return AAT::kern_accelerator_data_t ();
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh
index 56290905cec..68a4e7cba75 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh
@@ -172,9 +172,9 @@ struct BaseCoord
hb_direction_t direction) const
{
switch (u.format) {
- case 1: return u.format1.get_coord (font, direction);
- case 2: return u.format2.get_coord (font, direction);
- case 3: return u.format3.get_coord (font, var_store, direction);
+ case 1: hb_barrier (); return u.format1.get_coord (font, direction);
+ case 2: hb_barrier (); return u.format2.get_coord (font, direction);
+ case 3: hb_barrier (); return u.format3.get_coord (font, var_store, direction);
default:return 0;
}
}
@@ -182,7 +182,7 @@ struct BaseCoord
void collect_variation_indices (hb_set_t& varidx_set /* OUT */) const
{
switch (u.format) {
- case 3: u.format3.collect_variation_indices (varidx_set);
+ case 3: hb_barrier (); u.format3.collect_variation_indices (varidx_set);
default:return;
}
}
@@ -193,9 +193,9 @@ struct BaseCoord
if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value ();
TRACE_DISPATCH (this, u.format);
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
- case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
+ case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
+ case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
default:return_trace (c->default_return_value ());
}
}
@@ -206,9 +206,9 @@ struct BaseCoord
if (unlikely (!u.format.sanitize (c))) return_trace (false);
hb_barrier ();
switch (u.format) {
- case 1: return_trace (u.format1.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
- case 3: return_trace (u.format3.sanitize (c));
+ case 1: hb_barrier (); return_trace (u.format1.sanitize (c));
+ case 2: hb_barrier (); return_trace (u.format2.sanitize (c));
+ case 3: hb_barrier (); return_trace (u.format3.sanitize (c));
default:return_trace (false);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
index 66274534b0b..8216f54ca1a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
@@ -646,8 +646,7 @@ struct FeatureParamsCharacterVariants
return;
unsigned last_name_id = (unsigned) firstParamUILabelNameID + (unsigned) numNamedParameters - 1;
- if (last_name_id >= 256 && last_name_id <= 32767)
- nameids_to_retain->add_range (firstParamUILabelNameID, last_name_id);
+ nameids_to_retain->add_range (firstParamUILabelNameID, last_name_id);
}
bool subset (hb_subset_context_t *c) const
@@ -2068,11 +2067,11 @@ struct ClassDef
unsigned int get_class (hb_codepoint_t glyph_id) const
{
switch (u.format) {
- case 1: return u.format1.get_class (glyph_id);
- case 2: return u.format2.get_class (glyph_id);
+ case 1: hb_barrier (); return u.format1.get_class (glyph_id);
+ case 2: hb_barrier (); return u.format2.get_class (glyph_id);
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.get_class (glyph_id);
- case 4: return u.format4.get_class (glyph_id);
+ case 3: hb_barrier (); return u.format3.get_class (glyph_id);
+ case 4: hb_barrier (); return u.format4.get_class (glyph_id);
#endif
default:return 0;
}
@@ -2081,11 +2080,11 @@ struct ClassDef
unsigned get_population () const
{
switch (u.format) {
- case 1: return u.format1.get_population ();
- case 2: return u.format2.get_population ();
+ case 1: hb_barrier (); return u.format1.get_population ();
+ case 2: hb_barrier (); return u.format2.get_population ();
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.get_population ();
- case 4: return u.format4.get_population ();
+ case 3: hb_barrier (); return u.format3.get_population ();
+ case 4: hb_barrier (); return u.format4.get_population ();
#endif
default:return NOT_COVERED;
}
@@ -2147,11 +2146,11 @@ struct ClassDef
switch (u.format)
{
- case 1: return_trace (u.format1.serialize (c, it));
- case 2: return_trace (u.format2.serialize (c, it));
+ case 1: hb_barrier (); return_trace (u.format1.serialize (c, it));
+ case 2: hb_barrier (); return_trace (u.format2.serialize (c, it));
#ifndef HB_NO_BEYOND_64K
- case 3: return_trace (u.format3.serialize (c, it));
- case 4: return_trace (u.format4.serialize (c, it));
+ case 3: hb_barrier (); return_trace (u.format3.serialize (c, it));
+ case 4: hb_barrier (); return_trace (u.format4.serialize (c, it));
#endif
default:return_trace (false);
}
@@ -2165,11 +2164,11 @@ struct ClassDef
{
TRACE_SUBSET (this);
switch (u.format) {
- case 1: return_trace (u.format1.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter));
- case 2: return_trace (u.format2.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter));
+ case 1: hb_barrier (); return_trace (u.format1.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter));
+ case 2: hb_barrier (); return_trace (u.format2.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter));
#ifndef HB_NO_BEYOND_64K
- case 3: return_trace (u.format3.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter));
- case 4: return_trace (u.format4.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter));
+ case 3: hb_barrier (); return_trace (u.format3.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter));
+ case 4: hb_barrier (); return_trace (u.format4.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter));
#endif
default:return_trace (false);
}
@@ -2181,11 +2180,11 @@ struct ClassDef
if (!u.format.sanitize (c)) return_trace (false);
hb_barrier ();
switch (u.format) {
- case 1: return_trace (u.format1.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
+ case 1: hb_barrier (); return_trace (u.format1.sanitize (c));
+ case 2: hb_barrier (); return_trace (u.format2.sanitize (c));
#ifndef HB_NO_BEYOND_64K
- case 3: return_trace (u.format3.sanitize (c));
- case 4: return_trace (u.format4.sanitize (c));
+ case 3: hb_barrier (); return_trace (u.format3.sanitize (c));
+ case 4: hb_barrier (); return_trace (u.format4.sanitize (c));
#endif
default:return_trace (true);
}
@@ -2194,11 +2193,11 @@ struct ClassDef
unsigned cost () const
{
switch (u.format) {
- case 1: return u.format1.cost ();
- case 2: return u.format2.cost ();
+ case 1: hb_barrier (); return u.format1.cost ();
+ case 2: hb_barrier (); return u.format2.cost ();
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.cost ();
- case 4: return u.format4.cost ();
+ case 3: hb_barrier (); return u.format3.cost ();
+ case 4: hb_barrier (); return u.format4.cost ();
#endif
default:return 0u;
}
@@ -2210,11 +2209,11 @@ struct ClassDef
bool collect_coverage (set_t *glyphs) const
{
switch (u.format) {
- case 1: return u.format1.collect_coverage (glyphs);
- case 2: return u.format2.collect_coverage (glyphs);
+ case 1: hb_barrier (); return u.format1.collect_coverage (glyphs);
+ case 2: hb_barrier (); return u.format2.collect_coverage (glyphs);
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.collect_coverage (glyphs);
- case 4: return u.format4.collect_coverage (glyphs);
+ case 3: hb_barrier (); return u.format3.collect_coverage (glyphs);
+ case 4: hb_barrier (); return u.format4.collect_coverage (glyphs);
#endif
default:return false;
}
@@ -2226,11 +2225,11 @@ struct ClassDef
bool collect_class (set_t *glyphs, unsigned int klass) const
{
switch (u.format) {
- case 1: return u.format1.collect_class (glyphs, klass);
- case 2: return u.format2.collect_class (glyphs, klass);
+ case 1: hb_barrier (); return u.format1.collect_class (glyphs, klass);
+ case 2: hb_barrier (); return u.format2.collect_class (glyphs, klass);
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.collect_class (glyphs, klass);
- case 4: return u.format4.collect_class (glyphs, klass);
+ case 3: hb_barrier (); return u.format3.collect_class (glyphs, klass);
+ case 4: hb_barrier (); return u.format4.collect_class (glyphs, klass);
#endif
default:return false;
}
@@ -2239,11 +2238,11 @@ struct ClassDef
bool intersects (const hb_set_t *glyphs) const
{
switch (u.format) {
- case 1: return u.format1.intersects (glyphs);
- case 2: return u.format2.intersects (glyphs);
+ case 1: hb_barrier (); return u.format1.intersects (glyphs);
+ case 2: hb_barrier (); return u.format2.intersects (glyphs);
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.intersects (glyphs);
- case 4: return u.format4.intersects (glyphs);
+ case 3: hb_barrier (); return u.format3.intersects (glyphs);
+ case 4: hb_barrier (); return u.format4.intersects (glyphs);
#endif
default:return false;
}
@@ -2251,11 +2250,11 @@ struct ClassDef
bool intersects_class (const hb_set_t *glyphs, unsigned int klass) const
{
switch (u.format) {
- case 1: return u.format1.intersects_class (glyphs, klass);
- case 2: return u.format2.intersects_class (glyphs, klass);
+ case 1: hb_barrier (); return u.format1.intersects_class (glyphs, klass);
+ case 2: hb_barrier (); return u.format2.intersects_class (glyphs, klass);
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.intersects_class (glyphs, klass);
- case 4: return u.format4.intersects_class (glyphs, klass);
+ case 3: hb_barrier (); return u.format3.intersects_class (glyphs, klass);
+ case 4: hb_barrier (); return u.format4.intersects_class (glyphs, klass);
#endif
default:return false;
}
@@ -2264,11 +2263,11 @@ struct ClassDef
void intersected_class_glyphs (const hb_set_t *glyphs, unsigned klass, hb_set_t *intersect_glyphs) const
{
switch (u.format) {
- case 1: return u.format1.intersected_class_glyphs (glyphs, klass, intersect_glyphs);
- case 2: return u.format2.intersected_class_glyphs (glyphs, klass, intersect_glyphs);
+ case 1: hb_barrier (); return u.format1.intersected_class_glyphs (glyphs, klass, intersect_glyphs);
+ case 2: hb_barrier (); return u.format2.intersected_class_glyphs (glyphs, klass, intersect_glyphs);
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.intersected_class_glyphs (glyphs, klass, intersect_glyphs);
- case 4: return u.format4.intersected_class_glyphs (glyphs, klass, intersect_glyphs);
+ case 3: hb_barrier (); return u.format3.intersected_class_glyphs (glyphs, klass, intersect_glyphs);
+ case 4: hb_barrier (); return u.format4.intersected_class_glyphs (glyphs, klass, intersect_glyphs);
#endif
default:return;
}
@@ -2277,11 +2276,11 @@ struct ClassDef
void intersected_classes (const hb_set_t *glyphs, hb_set_t *intersect_classes) const
{
switch (u.format) {
- case 1: return u.format1.intersected_classes (glyphs, intersect_classes);
- case 2: return u.format2.intersected_classes (glyphs, intersect_classes);
+ case 1: hb_barrier (); return u.format1.intersected_classes (glyphs, intersect_classes);
+ case 2: hb_barrier (); return u.format2.intersected_classes (glyphs, intersect_classes);
#ifndef HB_NO_BEYOND_64K
- case 3: return u.format3.intersected_classes (glyphs, intersect_classes);
- case 4: return u.format4.intersected_classes (glyphs, intersect_classes);
+ case 3: hb_barrier (); return u.format3.intersected_classes (glyphs, intersect_classes);
+ case 4: hb_barrier (); return u.format4.intersected_classes (glyphs, intersect_classes);
#endif
default:return;
}
@@ -3638,8 +3637,8 @@ struct DeltaSetIndexMap
unsigned length = plan.get_output_map ().length;
u.format = length <= 0xFFFF ? 0 : 1;
switch (u.format) {
- case 0: return_trace (u.format0.serialize (c, plan));
- case 1: return_trace (u.format1.serialize (c, plan));
+ case 0: hb_barrier (); return_trace (u.format0.serialize (c, plan));
+ case 1: hb_barrier (); return_trace (u.format1.serialize (c, plan));
default:return_trace (false);
}
}
@@ -3647,8 +3646,8 @@ struct DeltaSetIndexMap
uint32_t map (unsigned v) const
{
switch (u.format) {
- case 0: return (u.format0.map (v));
- case 1: return (u.format1.map (v));
+ case 0: hb_barrier (); return (u.format0.map (v));
+ case 1: hb_barrier (); return (u.format1.map (v));
default:return v;
}
}
@@ -3656,8 +3655,8 @@ struct DeltaSetIndexMap
unsigned get_map_count () const
{
switch (u.format) {
- case 0: return u.format0.get_map_count ();
- case 1: return u.format1.get_map_count ();
+ case 0: hb_barrier (); return u.format0.get_map_count ();
+ case 1: hb_barrier (); return u.format1.get_map_count ();
default:return 0;
}
}
@@ -3665,8 +3664,8 @@ struct DeltaSetIndexMap
unsigned get_width () const
{
switch (u.format) {
- case 0: return u.format0.get_width ();
- case 1: return u.format1.get_width ();
+ case 0: hb_barrier (); return u.format0.get_width ();
+ case 1: hb_barrier (); return u.format1.get_width ();
default:return 0;
}
}
@@ -3674,8 +3673,8 @@ struct DeltaSetIndexMap
unsigned get_inner_bit_count () const
{
switch (u.format) {
- case 0: return u.format0.get_inner_bit_count ();
- case 1: return u.format1.get_inner_bit_count ();
+ case 0: hb_barrier (); return u.format0.get_inner_bit_count ();
+ case 1: hb_barrier (); return u.format1.get_inner_bit_count ();
default:return 0;
}
}
@@ -3686,8 +3685,8 @@ struct DeltaSetIndexMap
if (!u.format.sanitize (c)) return_trace (false);
hb_barrier ();
switch (u.format) {
- case 0: return_trace (u.format0.sanitize (c));
- case 1: return_trace (u.format1.sanitize (c));
+ case 0: hb_barrier (); return_trace (u.format0.sanitize (c));
+ case 1: hb_barrier (); return_trace (u.format1.sanitize (c));
default:return_trace (true);
}
}
@@ -3696,8 +3695,8 @@ struct DeltaSetIndexMap
{
TRACE_SERIALIZE (this);
switch (u.format) {
- case 0: return_trace (reinterpret_cast<DeltaSetIndexMap *> (u.format0.copy (c)));
- case 1: return_trace (reinterpret_cast<DeltaSetIndexMap *> (u.format1.copy (c)));
+ case 0: hb_barrier (); return_trace (reinterpret_cast<DeltaSetIndexMap *> (u.format0.copy (c)));
+ case 1: hb_barrier (); return_trace (reinterpret_cast<DeltaSetIndexMap *> (u.format1.copy (c)));
default:return_trace (nullptr);
}
}
@@ -3799,6 +3798,7 @@ enum Cond_with_Var_flag_t
DROP_RECORD_WITH_VAR = 3,
};
+struct Condition;
template <typename Instancer>
static bool
@@ -4111,11 +4111,11 @@ struct Condition
Instancer *instancer) const
{
switch (u.format) {
- case 1: return u.format1.evaluate (coords, coord_len, instancer);
- case 2: return u.format2.evaluate (coords, coord_len, instancer);
- case 3: return u.format3.evaluate (coords, coord_len, instancer);
- case 4: return u.format4.evaluate (coords, coord_len, instancer);
- case 5: return u.format5.evaluate (coords, coord_len, instancer);
+ case 1: hb_barrier (); return u.format1.evaluate (coords, coord_len, instancer);
+ case 2: hb_barrier (); return u.format2.evaluate (coords, coord_len, instancer);
+ case 3: hb_barrier (); return u.format3.evaluate (coords, coord_len, instancer);
+ case 4: hb_barrier (); return u.format4.evaluate (coords, coord_len, instancer);
+ case 5: hb_barrier (); return u.format5.evaluate (coords, coord_len, instancer);
default:return false;
}
}
@@ -4124,7 +4124,7 @@ struct Condition
hb_map_t *condition_map /* OUT */) const
{
switch (u.format) {
- case 1: return u.format1.keep_with_variations (c, condition_map);
+ case 1: hb_barrier (); return u.format1.keep_with_variations (c, condition_map);
// TODO(subset)
default: c->apply = false; return KEEP_COND_WITH_VAR;
}
@@ -4136,11 +4136,11 @@ struct Condition
if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value ();
TRACE_DISPATCH (this, u.format);
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
- case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
- case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
- case 5: return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...));
+ case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
+ case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
+ case 4: hb_barrier (); return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
+ case 5: hb_barrier (); return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...));
default:return_trace (c->default_return_value ());
}
}
@@ -4151,11 +4151,11 @@ struct Condition
if (!u.format.sanitize (c)) return_trace (false);
hb_barrier ();
switch (u.format) {
- case 1: return_trace (u.format1.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
- case 3: return_trace (u.format3.sanitize (c));
- case 4: return_trace (u.format4.sanitize (c));
- case 5: return_trace (u.format5.sanitize (c));
+ case 1: hb_barrier (); return_trace (u.format1.sanitize (c));
+ case 2: hb_barrier (); return_trace (u.format2.sanitize (c));
+ case 3: hb_barrier (); return_trace (u.format3.sanitize (c));
+ case 4: hb_barrier (); return_trace (u.format4.sanitize (c));
+ case 5: hb_barrier (); return_trace (u.format5.sanitize (c));
default:return_trace (true);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
index a0e3f1fde46..2c9056c7051 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
@@ -406,6 +406,7 @@ struct hb_ot_apply_context_t :
void set_ignore_zwnj (bool ignore_zwnj_) { ignore_zwnj = ignore_zwnj_; }
void set_ignore_zwj (bool ignore_zwj_) { ignore_zwj = ignore_zwj_; }
+ void set_ignore_hidden (bool ignore_hidden_) { ignore_hidden = ignore_hidden_; }
void set_lookup_props (unsigned int lookup_props_) { lookup_props = lookup_props_; }
void set_mask (hb_mask_t mask_) { mask = mask_; }
void set_per_syllable (bool per_syllable_) { per_syllable = per_syllable_; }
@@ -451,9 +452,10 @@ struct hb_ot_apply_context_t :
if (!c->check_glyph_property (&info, lookup_props))
return SKIP_YES;
- if (unlikely (_hb_glyph_info_is_default_ignorable_and_not_hidden (&info) &&
+ if (unlikely (_hb_glyph_info_is_default_ignorable (&info) &&
(ignore_zwnj || !_hb_glyph_info_is_zwnj (&info)) &&
- (ignore_zwj || !_hb_glyph_info_is_zwj (&info))))
+ (ignore_zwj || !_hb_glyph_info_is_zwj (&info)) &&
+ (ignore_hidden || !_hb_glyph_info_is_hidden (&info))))
return SKIP_MAYBE;
return SKIP_NO;
@@ -464,6 +466,7 @@ struct hb_ot_apply_context_t :
hb_mask_t mask = -1;
bool ignore_zwnj = false;
bool ignore_zwj = false;
+ bool ignore_hidden = false;
bool per_syllable = false;
uint8_t syllable = 0;
match_func_t match_func = nullptr;
@@ -486,6 +489,8 @@ struct hb_ot_apply_context_t :
matcher.set_ignore_zwnj (c->table_index == 1 || (context_match && c->auto_zwnj));
/* Ignore ZWJ if we are matching context, or asked to. */
matcher.set_ignore_zwj (context_match || c->auto_zwj);
+ /* Ignore hidden glyphs (like CGJ) during GPOS. */
+ matcher.set_ignore_hidden (c->table_index == 1);
matcher.set_mask (context_match ? -1 : c->lookup_mask);
/* Per syllable matching is only for GSUB. */
matcher.set_per_syllable (c->table_index == 0 && c->per_syllable);
@@ -2901,12 +2906,12 @@ struct Context
if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value ();
TRACE_DISPATCH (this, u.format);
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
- case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
+ case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
+ case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
#ifndef HB_NO_BEYOND_64K
- case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
- case 5: return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...));
+ case 4: hb_barrier (); return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
+ case 5: hb_barrier (); return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...));
#endif
default:return_trace (c->default_return_value ());
}
@@ -3390,6 +3395,15 @@ struct ChainRuleSet
*
* Replicated from LigatureSet::apply(). */
+ /* If the input skippy has non-auto joiners behavior (as in Indic shapers),
+ * skip this fast path, as we don't distinguish between input & lookahead
+ * matching in the fast path.
+ *
+ * https://github.com/harfbuzz/harfbuzz/issues/4813
+ */
+ if (!c->auto_zwnj || !c->auto_zwj)
+ goto slow;
+
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
skippy_iter.reset (c->buffer->idx);
skippy_iter.set_match_func (match_always, nullptr);
@@ -3429,10 +3443,10 @@ struct ChainRuleSet
}
matched = skippy_iter.next ();
if (likely (matched && !skippy_iter.may_skip (c->buffer->info[skippy_iter.idx])))
- {
+ {
second = &c->buffer->info[skippy_iter.idx];
unsafe_to2 = skippy_iter.idx + 1;
- }
+ }
auto match_input = lookup_context.funcs.match[1];
auto match_lookahead = lookup_context.funcs.match[2];
@@ -4225,12 +4239,12 @@ struct ChainContext
if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value ();
TRACE_DISPATCH (this, u.format);
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
- case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
+ case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
+ case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
#ifndef HB_NO_BEYOND_64K
- case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
- case 5: return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...));
+ case 4: hb_barrier (); return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
+ case 5: hb_barrier (); return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...));
#endif
default:return_trace (c->default_return_value ());
}
@@ -4314,7 +4328,7 @@ struct Extension
unsigned int get_type () const
{
switch (u.format) {
- case 1: return u.format1.get_type ();
+ case 1: hb_barrier (); return u.format1.get_type ();
default:return 0;
}
}
@@ -4322,7 +4336,7 @@ struct Extension
const X& get_subtable () const
{
switch (u.format) {
- case 1: return u.format1.template get_subtable<typename T::SubTable> ();
+ case 1: hb_barrier (); return u.format1.template get_subtable<typename T::SubTable> ();
default:return Null (typename T::SubTable);
}
}
@@ -4334,7 +4348,7 @@ struct Extension
typename hb_subset_context_t::return_t dispatch (hb_subset_context_t *c, Ts&&... ds) const
{
switch (u.format) {
- case 1: return u.format1.subset (c);
+ case 1: hb_barrier (); return u.format1.subset (c);
default: return c->default_return_value ();
}
}
@@ -4345,7 +4359,7 @@ struct Extension
if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value ();
TRACE_DISPATCH (this, u.format);
switch (u.format) {
- case 1: return_trace (u.format1.dispatch (c, std::forward<Ts> (ds)...));
+ case 1: hb_barrier (); return_trace (u.format1.dispatch (c, std::forward<Ts> (ds)...));
default:return_trace (c->default_return_value ());
}
}
@@ -4560,9 +4574,9 @@ struct GSUBGPOS
unsigned int get_size () const
{
switch (u.version.major) {
- case 1: return u.version1.get_size ();
+ case 1: hb_barrier (); return u.version1.get_size ();
#ifndef HB_NO_BEYOND_64K
- case 2: return u.version2.get_size ();
+ case 2: hb_barrier (); return u.version2.get_size ();
#endif
default: return u.version.static_size;
}
@@ -4575,9 +4589,9 @@ struct GSUBGPOS
if (unlikely (!u.version.sanitize (c))) return_trace (false);
hb_barrier ();
switch (u.version.major) {
- case 1: return_trace (u.version1.sanitize<TLookup> (c));
+ case 1: hb_barrier (); return_trace (u.version1.sanitize<TLookup> (c));
#ifndef HB_NO_BEYOND_64K
- case 2: return_trace (u.version2.sanitize<TLookup> (c));
+ case 2: hb_barrier (); return_trace (u.version2.sanitize<TLookup> (c));
#endif
default: return_trace (true);
}
@@ -4587,9 +4601,9 @@ struct GSUBGPOS
bool subset (hb_subset_layout_context_t *c) const
{
switch (u.version.major) {
- case 1: return u.version1.subset<TLookup> (c);
+ case 1: hb_barrier (); return u.version1.subset<TLookup> (c);
#ifndef HB_NO_BEYOND_64K
- case 2: return u.version2.subset<TLookup> (c);
+ case 2: hb_barrier (); return u.version2.subset<TLookup> (c);
#endif
default: return false;
}
@@ -4598,9 +4612,9 @@ struct GSUBGPOS
const ScriptList &get_script_list () const
{
switch (u.version.major) {
- case 1: return this+u.version1.scriptList;
+ case 1: hb_barrier (); return this+u.version1.scriptList;
#ifndef HB_NO_BEYOND_64K
- case 2: return this+u.version2.scriptList;
+ case 2: hb_barrier (); return this+u.version2.scriptList;
#endif
default: return Null (ScriptList);
}
@@ -4608,9 +4622,9 @@ struct GSUBGPOS
const FeatureList &get_feature_list () const
{
switch (u.version.major) {
- case 1: return this+u.version1.featureList;
+ case 1: hb_barrier (); return this+u.version1.featureList;
#ifndef HB_NO_BEYOND_64K
- case 2: return this+u.version2.featureList;
+ case 2: hb_barrier (); return this+u.version2.featureList;
#endif
default: return Null (FeatureList);
}
@@ -4618,9 +4632,9 @@ struct GSUBGPOS
unsigned int get_lookup_count () const
{
switch (u.version.major) {
- case 1: return (this+u.version1.lookupList).len;
+ case 1: hb_barrier (); return (this+u.version1.lookupList).len;
#ifndef HB_NO_BEYOND_64K
- case 2: return (this+u.version2.lookupList).len;
+ case 2: hb_barrier (); return (this+u.version2.lookupList).len;
#endif
default: return 0;
}
@@ -4628,9 +4642,9 @@ struct GSUBGPOS
const Lookup& get_lookup (unsigned int i) const
{
switch (u.version.major) {
- case 1: return (this+u.version1.lookupList)[i];
+ case 1: hb_barrier (); return (this+u.version1.lookupList)[i];
#ifndef HB_NO_BEYOND_64K
- case 2: return (this+u.version2.lookupList)[i];
+ case 2: hb_barrier (); return (this+u.version2.lookupList)[i];
#endif
default: return Null (Lookup);
}
@@ -4638,9 +4652,9 @@ struct GSUBGPOS
const FeatureVariations &get_feature_variations () const
{
switch (u.version.major) {
- case 1: return (u.version.to_int () >= 0x00010001u ? this+u.version1.featureVars : Null (FeatureVariations));
+ case 1: hb_barrier (); return (u.version.to_int () >= 0x00010001u && hb_barrier () ? this+u.version1.featureVars : Null (FeatureVariations));
#ifndef HB_NO_BEYOND_64K
- case 2: return this+u.version2.featureVars;
+ case 2: hb_barrier (); return this+u.version2.featureVars;
#endif
default: return Null (FeatureVariations);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh
index d71889331d8..3a8d36ac49a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh
@@ -173,12 +173,12 @@ _hb_next_syllable (hb_buffer_t *buffer, unsigned int start)
/* Design:
* unicode_props() is a two-byte number. The low byte includes:
- * - General_Category: 5 bits.
+ * - Extended General_Category: 5 bits.
* - A bit each for:
* * Is it Default_Ignorable(); we have a modified Default_Ignorable().
* * Whether it's one of the four Mongolian Free Variation Selectors,
* CGJ, or other characters that are hidden but should not be ignored
- * like most other Default_Ignorable()s do during matching.
+ * like most other Default_Ignorable()s do during GSUB matching.
* * Whether it's a grapheme continuation.
*
* The high-byte has different meanings, switched by the Gen-Cat:
@@ -311,12 +311,15 @@ _hb_glyph_info_is_default_ignorable (const hb_glyph_info_t *info)
return (info->unicode_props() & UPROPS_MASK_IGNORABLE) &&
!_hb_glyph_info_substituted (info);
}
+static inline void
+_hb_glyph_info_clear_default_ignorable (hb_glyph_info_t *info)
+{
+ info->unicode_props() &= ~ UPROPS_MASK_IGNORABLE;
+}
static inline bool
-_hb_glyph_info_is_default_ignorable_and_not_hidden (const hb_glyph_info_t *info)
+_hb_glyph_info_is_hidden (const hb_glyph_info_t *info)
{
- return ((info->unicode_props() & (UPROPS_MASK_IGNORABLE|UPROPS_MASK_HIDDEN))
- == UPROPS_MASK_IGNORABLE) &&
- !_hb_glyph_info_substituted (info);
+ return info->unicode_props() & UPROPS_MASK_HIDDEN;
}
static inline void
_hb_glyph_info_unhide (hb_glyph_info_t *info)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh
index d44233610a6..67d1b6aa713 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh
@@ -84,9 +84,9 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const
old_gid_new_index_map.alloc (num_glyphs);
glyph_name_to_new_index.alloc (num_glyphs);
- for (hb_codepoint_t new_gid = 0; new_gid < num_glyphs; new_gid++)
+ for (auto _ : c->plan->new_to_old_gid_list)
{
- hb_codepoint_t old_gid = reverse_glyph_map.get (new_gid);
+ hb_codepoint_t old_gid = _.second;
unsigned old_index = glyphNameIndex[old_gid];
unsigned new_index;
@@ -125,13 +125,22 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const
old_gid_new_index_map.set (old_gid, new_index);
}
+ if (old_gid_new_index_map.in_error())
+ return_trace (false);
+
auto index_iter =
+ hb_range (num_glyphs)
- | hb_map (reverse_glyph_map)
- | hb_map_retains_sorting ([&](hb_codepoint_t old_gid)
+ | hb_map_retains_sorting ([&](hb_codepoint_t new_gid)
{
- unsigned new_index = old_gid_new_index_map.get (old_gid);
- return hb_pair_t<unsigned, unsigned> (old_gid, new_index);
+ hb_codepoint_t *old_gid;
+ /* use 0 for retain-gid holes, which refers to the name .notdef,
+ * as the glyphNameIndex entry for that glyph ID."*/
+ unsigned new_index = 0;
+ if (reverse_glyph_map.has (new_gid, &old_gid)) {
+ new_index = old_gid_new_index_map.get (*old_gid);
+ return hb_pair_t<unsigned, unsigned> (*old_gid, new_index);
+ }
+ return hb_pair_t<unsigned, unsigned> (new_gid, new_index);
})
;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh
index 41918790371..18ecea18256 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh
@@ -301,7 +301,7 @@ struct post
return_trace (c->check_struct (this) &&
hb_barrier () &&
(version.to_int () == 0x00010000 ||
- (version.to_int () == 0x00020000 && v2X.sanitize (c)) ||
+ (version.to_int () == 0x00020000 && hb_barrier () && v2X.sanitize (c)) ||
version.to_int () == 0x00030000));
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc
index 7948899ab8b..b86649d7782 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc
@@ -153,7 +153,7 @@ decompose_current_character (const hb_ot_shape_normalize_context_t *c, bool shor
hb_codepoint_t u = buffer->cur().codepoint;
hb_codepoint_t glyph = 0;
- if (shortest && c->font->get_nominal_glyph (u, &glyph, c->not_found))
+ if (shortest && c->font->get_nominal_glyph (u, &glyph, buffer->not_found))
{
next_char (buffer, glyph);
return;
@@ -165,7 +165,7 @@ decompose_current_character (const hb_ot_shape_normalize_context_t *c, bool shor
return;
}
- if (!shortest && c->font->get_nominal_glyph (u, &glyph, c->not_found))
+ if (!shortest && c->font->get_nominal_glyph (u, &glyph, buffer->not_found))
{
next_char (buffer, glyph);
return;
@@ -220,6 +220,13 @@ handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c,
/* Just pass on the two characters separately, let GSUB do its magic. */
set_glyph (buffer->cur(), font);
(void) buffer->next_glyph ();
+
+ buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_VARIATION_SELECTOR_FALLBACK;
+ _hb_glyph_info_set_general_category (&buffer->cur(),
+ _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR);
+ if (buffer->not_found_variation_selector != HB_CODEPOINT_INVALID)
+ _hb_glyph_info_clear_default_ignorable (&buffer->cur());
+
set_glyph (buffer->cur(), font);
(void) buffer->next_glyph ();
}
@@ -295,7 +302,8 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
buffer,
font,
buffer->unicode,
- buffer->not_found,
+ plan->shaper->decompose ? plan->shaper->decompose : hb_ot_shape_normalize_context_t::decompose_unicode,
+ plan->shaper->compose ? plan->shaper->compose : hb_ot_shape_normalize_context_t::compose_unicode
};
c.override_decompose_and_compose (plan->shaper->decompose, plan->shaper->compose);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh
index 0e8a54b60e3..f12cb35c0fe 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh
@@ -89,7 +89,6 @@ struct hb_ot_shape_normalize_context_t
hb_buffer_t *buffer;
hb_font_t *font;
hb_unicode_funcs_t *unicode;
- const hb_codepoint_t not_found;
bool (*decompose) (const hb_ot_shape_normalize_context_t *c,
hb_codepoint_t ab,
hb_codepoint_t *a,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc
index bbf07c1f3a1..1aca39101ef 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc
@@ -838,6 +838,29 @@ hb_ot_zero_width_default_ignorables (const hb_buffer_t *buffer)
}
static void
+hb_ot_deal_with_variation_selectors (hb_buffer_t *buffer)
+{
+ if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_VARIATION_SELECTOR_FALLBACK) ||
+ buffer->not_found_variation_selector == HB_CODEPOINT_INVALID)
+ return;
+
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ hb_glyph_position_t *pos = buffer->pos;
+
+ for (unsigned int i = 0; i < count; i++)
+ {
+ if (_hb_glyph_info_get_general_category (&info[i]) ==
+ _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR)
+ {
+ info[i].codepoint = buffer->not_found_variation_selector;
+ pos[i].x_advance = pos[i].y_advance = pos[i].x_offset = pos[i].y_offset = 0;
+ _hb_glyph_info_set_general_category (&info[i], HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK);
+ }
+ }
+}
+
+static void
hb_ot_hide_default_ignorables (hb_buffer_t *buffer,
hb_font_t *font)
{
@@ -966,6 +989,7 @@ hb_ot_substitute_post (const hb_ot_shape_context_t *c)
hb_aat_layout_remove_deleted_glyphs (c->buffer);
#endif
+ hb_ot_deal_with_variation_selectors (c->buffer);
hb_ot_hide_default_ignorables (c->buffer, c->font);
if (c->plan->shaper->postprocess_glyphs &&
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh
index a5a7b84af45..e38686e3ebb 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh
@@ -6,10 +6,10 @@
*
* on files with these headers:
*
- * # ArabicShaping-15.1.0.txt
- * # Date: 2023-01-05
- * # Scripts-15.1.0.txt
- * # Date: 2023-07-28, 16:01:07 GMT
+ * # ArabicShaping-16.0.0.txt
+ * # Date: 2024-07-30
+ * # Scripts-16.0.0.txt
+ * # Date: 2024-04-30, 21:48:40 GMT
*/
#ifndef HB_OT_SHAPER_ARABIC_JOINING_LIST_HH
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh
index 336a1391e97..d9917a15874 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh
@@ -6,10 +6,10 @@
*
* on files with these headers:
*
- * # ArabicShaping-15.1.0.txt
- * # Date: 2023-01-05
- * # Blocks-15.1.0.txt
- * # Date: 2023-07-28, 15:47:20 GMT
+ * # ArabicShaping-16.0.0.txt
+ * # Date: 2024-07-30
+ * # Blocks-16.0.0.txt
+ * # Date: 2024-02-02
* UnicodeData.txt does not have a header.
*/
@@ -136,7 +136,13 @@ static const uint8_t joining_table[] =
/* 10D00 */ L,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
/* 10D20 */ D,D,R,D,
-#define joining_offset_0x10f30u 1182
+#define joining_offset_0x10ec2u 1182
+
+ /* Arabic Extended-C */
+
+ /* 10EC0 */ R,D,D,
+
+#define joining_offset_0x10f30u 1185
/* Sogdian */
@@ -155,14 +161,14 @@ static const uint8_t joining_table[] =
/* 10FA0 */ D,U,D,D,R,R,R,U,D,R,R,D,D,R,D,D,
/* 10FC0 */ U,D,R,R,D,U,U,U,U,R,D,L,
-#define joining_offset_0x110bdu 1338
+#define joining_offset_0x110bdu 1341
/* Kaithi */
/* 110A0 */ U,X,X,
/* 110C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,U,
-#define joining_offset_0x1e900u 1355
+#define joining_offset_0x1e900u 1358
/* Adlam */
@@ -170,7 +176,7 @@ static const uint8_t joining_table[] =
/* 1E920 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
/* 1E940 */ D,D,D,D,X,X,X,X,X,X,X,T,
-}; /* Table items: 1431; occupancy: 57% */
+}; /* Table items: 1434; occupancy: 57% */
static unsigned int
@@ -198,6 +204,7 @@ joining_type (hb_codepoint_t u)
if (hb_in_range<hb_codepoint_t> (u, 0x10AC0u, 0x10AEFu)) return joining_table[u - 0x10AC0u + joining_offset_0x10ac0u];
if (hb_in_range<hb_codepoint_t> (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u];
if (hb_in_range<hb_codepoint_t> (u, 0x10D00u, 0x10D23u)) return joining_table[u - 0x10D00u + joining_offset_0x10d00u];
+ if (hb_in_range<hb_codepoint_t> (u, 0x10EC2u, 0x10EC4u)) return joining_table[u - 0x10EC2u + joining_offset_0x10ec2u];
if (hb_in_range<hb_codepoint_t> (u, 0x10F30u, 0x10FCBu)) return joining_table[u - 0x10F30u + joining_offset_0x10f30u];
break;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc
index d70746ed2bb..4e3b512b482 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc
@@ -233,10 +233,7 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
map->enable_feature (HB_TAG('c','a','l','t'), F_MANUAL_ZWJ);
/* https://github.com/harfbuzz/harfbuzz/issues/1573 */
if (!map->has_feature (HB_TAG('r','c','l','t')))
- {
map->add_gsub_pause (nullptr);
- map->enable_feature (HB_TAG('r','c','l','t'), F_MANUAL_ZWJ);
- }
map->enable_feature (HB_TAG('l','i','g','a'), F_MANUAL_ZWJ);
map->enable_feature (HB_TAG('c','l','i','g'), F_MANUAL_ZWJ);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc
index d9899a633c1..adea32efdae 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc
@@ -6,12 +6,12 @@
*
* on files with these headers:
*
- * # IndicSyllabicCategory-15.1.0.txt
- * # Date: 2023-01-05
- * # IndicPositionalCategory-15.1.0.txt
- * # Date: 2023-01-05
- * # Blocks-15.1.0.txt
- * # Date: 2023-07-28, 15:47:20 GMT
+ * # IndicSyllabicCategory-16.0.0.txt
+ * # Date: 2024-04-30, 21:48:21 GMT
+ * # IndicPositionalCategory-16.0.0.txt
+ * # Date: 2024-04-30, 21:48:21 GMT
+ * # Blocks-16.0.0.txt
+ * # Date: 2024-02-02
*/
#include "hb.hh"
@@ -89,7 +89,7 @@ static_assert (OT_VPst == M_Cat(VPst), "");
#define _OT_MW OT_MW /* 2 chars; MW */
#define _OT_MY OT_MY /* 3 chars; MY */
#define _OT_N OT_N /* 17 chars; N */
-#define _OT_GB OT_PLACEHOLDER /* 165 chars; PLACEHOLDER */
+#define _OT_GB OT_PLACEHOLDER /* 185 chars; PLACEHOLDER */
#define _OT_PT OT_PT /* 8 chars; PT */
#define _OT_R OT_Ra /* 14 chars; Ra */
#define _OT_Rf OT_Repha /* 1 chars; Repha */
@@ -112,7 +112,7 @@ static_assert (OT_VPst == M_Cat(VPst), "");
#define _POS_A POS_AFTER_MAIN /* 3 chars; AFTER_MAIN */
#define _POS_AP POS_AFTER_POST /* 50 chars; AFTER_POST */
#define _POS_AS POS_AFTER_SUB /* 51 chars; AFTER_SUB */
-#define _POS_C POS_BASE_C /* 833 chars; BASE_C */
+#define _POS_C POS_BASE_C /* 853 chars; BASE_C */
#define _POS_BS POS_BEFORE_SUB /* 25 chars; BEFORE_SUB */
#define _POS_B POS_BELOW_C /* 13 chars; BELOW_C */
#define _POS_X POS_END /* 71 chars; END */
@@ -458,7 +458,16 @@ static const uint16_t indic_table[] = {
/* 11338 */ _(X,X), _(X,X), _(X,X), _(N,X), _(N,X), _(X,X), _(X,X), _(X,X),
-}; /* Table items: 1728; occupancy: 71% */
+#define indic_offset_0x116d0u 1728
+
+
+ /* Myanmar Extended-C */
+
+ /* 116D0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C),
+ /* 116D8 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C),
+ /* 116E0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X),
+
+}; /* Table items: 1752; occupancy: 71% */
uint16_t
hb_indic_get_categories (hb_codepoint_t u)
@@ -498,6 +507,7 @@ hb_indic_get_categories (hb_codepoint_t u)
case 0x11u:
if (hb_in_range<hb_codepoint_t> (u, 0x11300u, 0x11307u)) return indic_table[u - 0x11300u + indic_offset_0x11300u];
if (hb_in_range<hb_codepoint_t> (u, 0x11338u, 0x1133Fu)) return indic_table[u - 0x11338u + indic_offset_0x11338u];
+ if (hb_in_range<hb_codepoint_t> (u, 0x116D0u, 0x116E7u)) return indic_table[u - 0x116D0u + indic_offset_0x116d0u];
break;
default:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh
index d581b65c07b..e8218834e76 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh
@@ -6,18 +6,18 @@
*
* on files with these headers:
*
- * # IndicSyllabicCategory-15.1.0.txt
- * # Date: 2023-01-05
- * # IndicPositionalCategory-15.1.0.txt
- * # Date: 2023-01-05
- * # ArabicShaping-15.1.0.txt
- * # Date: 2023-01-05
- * # DerivedCoreProperties-15.1.0.txt
- * # Date: 2023-08-07, 15:21:24 GMT
- * # Blocks-15.1.0.txt
- * # Date: 2023-07-28, 15:47:20 GMT
- * # Scripts-15.1.0.txt
- * # Date: 2023-07-28, 16:01:07 GMT
+ * # IndicSyllabicCategory-16.0.0.txt
+ * # Date: 2024-04-30, 21:48:21 GMT
+ * # IndicPositionalCategory-16.0.0.txt
+ * # Date: 2024-04-30, 21:48:21 GMT
+ * # ArabicShaping-16.0.0.txt
+ * # Date: 2024-07-30
+ * # DerivedCoreProperties-16.0.0.txt
+ * # Date: 2024-05-31, 18:09:32 GMT
+ * # Blocks-16.0.0.txt
+ * # Date: 2024-02-02
+ * # Scripts-16.0.0.txt
+ * # Date: 2024-04-30, 21:48:40 GMT
* # Override values For Indic_Syllabic_Category
* # Not derivable
* # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
@@ -27,6 +27,7 @@
* # Updated for Unicode 14.0 by Andrew Glass 2021-09-25
* # Updated for Unicode 15.0 by Andrew Glass 2022-09-16
* # Updated for Unicode 15.1 by Andrew Glass 2023-09-14
+ * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11
* # Override values For Indic_Positional_Category
* # Not derivable
* # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
@@ -38,6 +39,7 @@
* # Updated for Unicode 14.0 by Andrew Glass 2021-09-28
* # Updated for Unicode 15.0 by Andrew Glass 2022-09-16
* # Updated for Unicode 15.1 by Andrew Glass 2023-09-14
+ * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11
* UnicodeData.txt does not have a header.
*/
@@ -99,16 +101,16 @@
#ifndef HB_OPTIMIZE_SIZE
static const uint8_t
-hb_use_u8[3187] =
+hb_use_u8[3343] =
{
- 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 51, 57, 58, 179, 195, 61,
+ 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
- 14, 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 4, 2, 2,
+ 15, 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 4, 2, 2,
5, 6, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2, 2, 17,
18, 19, 20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 2, 33, 2, 2, 2,
@@ -121,24 +123,26 @@ hb_use_u8[3187] =
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, 47, 48, 2,
49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 51, 2, 2, 2,
- 2, 2, 2, 2, 2, 52, 53, 2, 54, 2, 2, 55, 2, 2, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 2, 66, 67, 2, 68, 69, 70, 71,
- 2, 72, 2, 73, 74, 75, 76, 2, 2, 77, 78, 79, 80, 2, 81, 82,
- 2, 83, 83, 83, 83, 83, 83, 83, 83, 84, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 52, 53, 2, 54, 2, 2, 55, 56, 2, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 2, 70, 71, 72, 73,
+ 2, 74, 2, 75, 76, 77, 78, 2, 2, 79, 80, 81, 82, 2, 83, 84,
+ 2, 85, 85, 85, 85, 85, 85, 85, 85, 86, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 87, 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, 88, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 89, 90, 2, 2, 2, 91, 2, 2, 2, 92,
+ 93, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 94, 94, 94, 95, 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, 85, 86, 2, 2, 2, 2, 2, 2, 2, 87,
- 88, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 89, 89, 89, 90, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 96, 97, 2, 2, 2, 2, 2,
+ 2, 2, 2, 98, 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, 2, 2, 2, 2, 2, 91, 92, 2, 2, 2, 2, 2,
- 2, 2, 2, 93, 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, 94, 2, 2, 95, 2, 2, 2, 96, 2, 2, 2, 2, 2,
- 2, 2, 2, 97, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 98, 98, 99, 100, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
- 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
- 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 2, 2, 2, 99, 2, 2, 100, 2, 2, 2, 101, 2, 102, 2, 2, 2,
+ 2, 2, 2, 103, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 104, 104, 105, 106, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
+ 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
+ 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4,
0, 5, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -167,7 +171,7 @@ hb_use_u8[3187] =
0, 0, 0, 27, 31, 2, 9, 0, 0, 10, 29, 30, 2, 2, 2, 9,
2, 2, 2, 30, 2, 2, 0, 17, 45, 0, 0, 35, 47, 0, 0, 0,
9, 50, 51, 0, 0, 0, 0, 0, 0, 11, 29, 2, 2, 2, 2, 9,
- 2, 2, 2, 2, 2, 2, 52, 53, 23, 23, 19, 31, 48, 33, 48, 34,
+ 2, 2, 2, 2, 2, 2, 52, 53, 23, 19, 20, 31, 48, 33, 48, 34,
54, 0, 0, 0, 35, 0, 0, 0, 30, 12, 29, 30, 2, 2, 2, 2,
2, 2, 2, 2, 9, 0, 2, 2, 2, 2, 30, 2, 2, 2, 2, 30,
0, 2, 2, 2, 9, 0, 55, 0, 35, 23, 22, 31, 31, 18, 48, 48,
@@ -195,88 +199,95 @@ hb_use_u8[3187] =
0, 2, 2, 100, 101, 102, 103, 61, 63, 104, 16, 45, 22, 59, 21, 80,
48, 48, 76, 11, 11, 11, 105, 46, 40, 11, 106, 74, 2, 2, 2, 2,
2, 2, 2, 107, 22, 20, 20, 22, 48, 48, 22, 108, 2, 2, 2, 9,
- 0, 0, 0, 0, 0, 0, 109, 110, 111, 111, 111, 0, 0, 0, 0, 0,
- 0, 106, 74, 2, 2, 2, 2, 2, 2, 60, 61, 59, 25, 22, 112, 61,
+ 0, 0, 0, 0, 0, 0, 109, 110, 110, 110, 110, 0, 0, 0, 0, 0,
+ 0, 106, 74, 2, 2, 2, 2, 2, 2, 60, 61, 59, 25, 22, 111, 61,
2, 2, 2, 2, 107, 22, 23, 45, 45, 102, 14, 0, 0, 0, 0, 0,
- 0, 2, 2, 61, 18, 48, 23, 113, 102, 102, 102, 114, 115, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 0, 30, 2, 11, 46, 116, 116, 116, 11, 116,
- 116, 15, 116, 116, 116, 26, 0, 40, 0, 0, 0, 117, 51, 11, 5, 0,
- 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 6, 119,
- 120, 42, 42, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120,
- 121, 120, 120, 120, 120, 120, 120, 120, 120, 0, 0, 122, 0, 0, 0, 0,
- 0, 0, 7, 122, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 123, 123, 0, 0,
+ 0, 2, 2, 61, 18, 48, 23, 112, 102, 102, 102, 113, 114, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 0, 30, 2, 11, 46, 115, 115, 115, 11, 115,
+ 115, 15, 115, 115, 115, 26, 0, 40, 0, 0, 0, 116, 51, 11, 5, 0,
+ 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 6, 118,
+ 119, 42, 42, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119,
+ 120, 119, 119, 119, 119, 119, 119, 119, 119, 0, 0, 121, 0, 0, 0, 0,
+ 0, 0, 7, 121, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 122, 122, 0, 0,
0, 2, 2, 2, 2, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
- 124, 0, 123, 123, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2,
+ 123, 0, 122, 122, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2,
2, 2, 65, 19, 16, 0, 0, 31, 0, 2, 2, 0, 0, 0, 0, 0,
- 0, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 125, 23, 23, 23, 23,
- 23, 23, 23, 126, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 2, 0, 0, 0, 0, 0, 52, 2, 2, 2, 22, 22, 127, 116,
- 0, 2, 2, 2, 128, 20, 59, 20, 113, 102, 129, 0, 0, 0, 0, 0,
- 0, 11, 130, 2, 2, 2, 2, 2, 2, 2, 131, 23, 22, 20, 48, 132,
- 133, 134, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2,
- 2, 2, 2, 2, 2, 10, 22, 59, 99, 76, 135, 136, 137, 0, 0, 0,
- 0, 2, 138, 2, 2, 2, 2, 139, 0, 30, 2, 42, 5, 0, 79, 15,
- 2, 53, 22, 140, 52, 53, 2, 2, 105, 10, 9, 0, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 141, 21, 25, 0, 0, 142, 143, 0, 0, 0,
- 0, 2, 65, 45, 23, 80, 47, 144, 0, 81, 81, 81, 81, 81, 81, 81,
- 81, 0, 0, 0, 0, 0, 0, 0, 6, 120, 120, 120, 120, 121, 0, 0,
+ 0, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 124, 23, 23, 23, 23,
+ 23, 23, 23, 125, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 2, 0, 0, 0, 0, 0, 52, 2, 2, 2, 22, 22, 126, 115,
+ 0, 2, 2, 2, 127, 20, 59, 20, 112, 102, 128, 0, 0, 0, 0, 0,
+ 0, 11, 129, 2, 2, 2, 2, 2, 2, 2, 130, 23, 22, 20, 48, 131,
+ 132, 133, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2,
+ 2, 2, 2, 2, 2, 10, 22, 59, 99, 76, 134, 135, 136, 0, 0, 0,
+ 0, 2, 137, 2, 2, 2, 2, 138, 0, 30, 2, 42, 5, 0, 79, 15,
+ 2, 53, 22, 139, 52, 53, 2, 2, 105, 10, 9, 0, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 140, 21, 25, 0, 0, 141, 142, 0, 0, 0,
+ 0, 2, 65, 45, 23, 80, 47, 143, 0, 81, 81, 81, 81, 81, 81, 81,
+ 81, 0, 0, 0, 0, 0, 0, 0, 6, 119, 119, 119, 119, 120, 0, 0,
0, 2, 2, 2, 2, 2, 9, 2, 2, 2, 9, 2, 30, 2, 2, 2,
- 2, 2, 30, 2, 2, 2, 30, 9, 0, 128, 20, 27, 31, 0, 0, 145,
- 146, 2, 2, 30, 2, 30, 2, 2, 2, 2, 2, 2, 0, 14, 37, 0,
- 147, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0,
+ 2, 2, 30, 2, 2, 2, 30, 9, 0, 127, 20, 27, 31, 0, 0, 144,
+ 145, 2, 2, 30, 2, 30, 2, 2, 2, 2, 2, 2, 0, 14, 37, 0,
+ 146, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 30, 2, 2, 9, 2, 2, 11, 41, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 27, 38, 0, 2, 2, 2, 116, 116, 116, 116,
- 116, 148, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0,
+ 0, 2, 2, 2, 0, 27, 22, 22, 30, 2, 2, 2, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 27, 38, 0, 2, 2, 2, 115, 115, 115, 115,
+ 115, 147, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0,
0, 9, 2, 2, 9, 2, 2, 2, 2, 30, 2, 9, 0, 30, 2, 0,
- 0, 149, 150, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 22, 20,
- 20, 20, 22, 22, 134, 0, 0, 0, 0, 0, 152, 152, 152, 152, 152, 152,
- 152, 152, 152, 152, 2, 2, 2, 2, 2, 53, 52, 53, 0, 0, 0, 0,
- 153, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0,
+ 0, 148, 149, 150, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 22, 20,
+ 20, 20, 22, 22, 133, 0, 0, 0, 0, 0, 151, 151, 151, 151, 151, 151,
+ 151, 151, 151, 151, 2, 2, 2, 2, 2, 53, 52, 53, 0, 0, 0, 0,
+ 152, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0,
0, 0, 31, 0, 0, 0, 0, 0, 0, 11, 49, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 128, 20, 22, 154, 22, 21, 155, 156, 2, 2, 2, 2,
- 2, 0, 0, 65, 157, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0,
- 0, 2, 65, 25, 20, 20, 20, 22, 22, 108, 158, 0, 0, 56, 159, 31,
- 160, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23,
- 19, 22, 22, 161, 44, 0, 0, 0, 49, 128, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 127, 20, 22, 153, 22, 21, 154, 155, 2, 2, 2, 2,
+ 2, 0, 0, 65, 156, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0,
+ 0, 2, 65, 25, 20, 20, 20, 22, 22, 108, 157, 0, 0, 56, 158, 31,
+ 159, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23,
+ 19, 22, 22, 160, 44, 0, 0, 0, 49, 127, 0, 0, 0, 0, 0, 0,
0, 2, 2, 2, 9, 9, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2,
- 30, 2, 2, 2, 2, 2, 2, 2, 10, 18, 19, 21, 22, 162, 31, 0,
+ 30, 2, 2, 2, 2, 2, 2, 2, 10, 18, 19, 21, 22, 161, 31, 0,
0, 11, 11, 30, 2, 2, 2, 9, 30, 9, 2, 30, 2, 2, 58, 17,
23, 16, 23, 47, 32, 33, 32, 34, 0, 0, 0, 0, 35, 0, 0, 0,
2, 2, 23, 0, 11, 11, 11, 46, 0, 11, 11, 46, 0, 0, 0, 0,
- 0, 2, 2, 65, 25, 20, 20, 20, 22, 23, 126, 15, 17, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 0, 0, 163, 164, 0, 0, 0, 0, 0, 0,
- 0, 18, 19, 20, 20, 66, 99, 25, 160, 11, 165, 9, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 2, 2, 65, 25, 20, 20, 0, 48, 48, 11,
- 166, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20,
- 0, 23, 19, 20, 20, 21, 16, 82, 166, 38, 0, 0, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 10, 167, 25, 20, 22, 22, 165, 9, 0, 0,
- 0, 2, 2, 2, 2, 2, 9, 43, 136, 23, 22, 20, 76, 21, 22, 0,
- 0, 2, 2, 2, 9, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 18,
- 19, 20, 21, 22, 105, 166, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2,
- 2, 2, 2, 30, 9, 2, 2, 2, 2, 23, 23, 18, 32, 33, 12, 168,
- 169, 170, 171, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2,
- 2, 65, 25, 20, 20, 0, 22, 23, 29, 108, 0, 33, 0, 0, 0, 0,
- 0, 52, 20, 22, 22, 22, 140, 2, 2, 2, 172, 173, 11, 15, 174, 72,
- 175, 0, 0, 1, 147, 0, 0, 0, 0, 52, 20, 22, 16, 19, 20, 2,
- 2, 2, 2, 158, 158, 158, 176, 176, 176, 176, 176, 176, 15, 177, 0, 30,
- 0, 22, 20, 20, 31, 22, 22, 11, 166, 0, 61, 61, 61, 61, 61, 61,
- 61, 66, 21, 82, 46, 0, 0, 0, 0, 2, 2, 2, 9, 2, 30, 2,
- 2, 52, 22, 22, 31, 0, 38, 22, 27, 11, 159, 178, 174, 0, 0, 0,
- 0, 2, 2, 2, 30, 9, 2, 2, 2, 2, 2, 2, 2, 2, 23, 23,
- 47, 22, 35, 82, 68, 0, 0, 0, 0, 2, 179, 66, 47, 0, 0, 0,
- 0, 11, 180, 2, 2, 2, 2, 2, 2, 2, 2, 23, 22, 20, 31, 0,
- 48, 16, 143, 0, 0, 0, 0, 0, 0, 181, 181, 181, 181, 181, 181, 181,
- 181, 182, 182, 182, 183, 184, 182, 181, 181, 185, 181, 181, 186, 187, 187, 187,
- 187, 187, 187, 187, 0, 0, 0, 0, 0, 11, 11, 11, 46, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 9, 0, 58, 188, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0,
- 40, 116, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 58,
- 37, 0, 6, 120, 120, 120, 121, 0, 0, 11, 11, 11, 49, 2, 2, 2,
- 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,
- 46, 2, 2, 2, 2, 2, 2, 11, 11, 2, 2, 2, 2, 2, 2, 22,
- 22, 2, 2, 44, 44, 44, 92, 0, 0, O, O, O, GB, B, B, O,
+ 0, 2, 2, 2, 2, 2, 30, 0, 9, 2, 2, 2, 30, 45, 59, 20,
+ 20, 31, 33, 32, 32, 25, 162, 29, 163, 164, 37, 0, 0, 0, 0, 0,
+ 0, 12, 26, 0, 0, 0, 0, 0, 0, 2, 2, 65, 25, 20, 20, 20,
+ 22, 23, 125, 15, 17, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0,
+ 165, 166, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 20, 66, 99, 25,
+ 159, 11, 167, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,
+ 65, 25, 20, 20, 0, 48, 48, 11, 168, 37, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 2, 20, 0, 23, 19, 20, 20, 21, 16, 82,
+ 168, 38, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 10, 169,
+ 25, 20, 22, 22, 167, 9, 0, 0, 0, 2, 2, 2, 2, 2, 9, 43,
+ 135, 23, 22, 20, 76, 21, 22, 0, 0, 2, 2, 2, 9, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 22, 105, 168, 37, 0,
+ 0, 2, 2, 2, 9, 30, 0, 2, 2, 2, 2, 30, 9, 2, 2, 2,
+ 2, 23, 23, 18, 32, 33, 12, 170, 164, 171, 172, 0, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 0, 2, 2, 2, 65, 25, 20, 20, 0, 22, 23,
+ 29, 108, 0, 33, 0, 0, 0, 0, 0, 52, 20, 22, 22, 22, 139, 2,
+ 2, 2, 173, 174, 11, 15, 175, 61, 176, 0, 0, 1, 146, 0, 0, 0,
+ 0, 52, 20, 22, 16, 19, 20, 2, 2, 2, 2, 157, 157, 157, 177, 177,
+ 177, 177, 177, 177, 15, 178, 0, 30, 0, 22, 20, 20, 31, 22, 22, 11,
+ 168, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0,
+ 0, 2, 2, 2, 9, 2, 30, 2, 2, 52, 22, 22, 31, 0, 38, 22,
+ 27, 11, 158, 179, 180, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2,
+ 2, 2, 2, 2, 2, 2, 23, 23, 47, 22, 35, 82, 68, 0, 0, 0,
+ 0, 2, 181, 66, 47, 0, 0, 0, 0, 11, 182, 2, 2, 2, 2, 2,
+ 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 142, 0, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 155, 0, 0, 183, 183, 183, 183, 183, 183, 183,
+ 183, 184, 184, 184, 185, 186, 184, 183, 183, 187, 183, 183, 188, 189, 189, 189,
+ 189, 189, 189, 189, 0, 0, 0, 0, 0, 183, 183, 183, 183, 183, 190, 0,
+ 0, 2, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, 22, 22, 191, 192,
+ 193, 11, 11, 11, 46, 0, 0, 0, 0, 29, 74, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 65, 47, 0, 2, 2, 2, 2, 2, 9, 0,
+ 58, 194, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 0, 0, 0, 40, 115, 26, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 119, 119, 119, 120, 0,
+ 0, 11, 11, 11, 49, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 11,
+ 11, 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2,
+ 20, 2, 2, 44, 44, 44, 92, 0, 0, O, O, O, GB, B, B, O,
SB, O, SE, GB, O, O, WJ,FMPst,FMPst, O, CGJ, B, O, B,VMAbv,VMAbv,
VMAbv, O,VMAbv, B,CMBlw,CMBlw,CMBlw,VMAbv,VMPst, VAbv, VPst,CMBlw, B, VPst, VPre, VPst,
VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst, VPst, VPst, H, VPre, VPst,VMBlw, O, O,
@@ -290,20 +301,20 @@ hb_use_u8[3187] =
FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB,
CMAbv,CMAbv, B, GB, B, VAbv, SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv,
VPre, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv,
- VPst, H, B, O,SMAbv,SMBlw,SMAbv,SMAbv,SMAbv, VPst, IS, VBlw, FAbv,VMPre,VMPre,FMAbv,
- CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB,
- SE, O, H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,
- CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv,
- FPst, VBlw, B, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O,
- IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv,
- IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,FMAbv,
- B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, IS, R, MPst, R, MPst,
- CMBlw, B,FMBlw, VBlw,VMAbv, R, MBlw, MBlw, GB, FBlw, FBlw,CMAbv, IS, VBlw, IS, GB,
- VAbv, R,VMPst, G, G, J, J, J, SB, SE, J, HR, G, G, HM, HM,
- HM, O, VBlw,
+ VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst, IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,
+ VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O,
+ H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv,
+ MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw,
+ B, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw,
+ B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv, IS,CMAbv,
+ O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv,
+ CMBlw, IS, R,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, MPst,
+ R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw,
+ IS, R, MBlw, GB, VAbv, R,VMPst, G, G, J, J, J, SB, SE, J, HR,
+ G, G, HM, HM, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw,
};
static const uint16_t
-hb_use_u16[808] =
+hb_use_u16[856] =
{
0, 0, 1, 2, 0, 3, 0, 3, 0, 0, 4, 5, 0, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
@@ -332,28 +343,31 @@ hb_use_u16[808] =
0, 0, 0, 0, 0, 0, 0,164, 0, 0, 0, 0, 0, 0, 0,165,
0, 0, 0, 0, 0, 0, 0,166,166,167, 34,168, 0, 0, 0, 0,
169,170, 10,171, 95, 0, 0, 0, 0, 0, 0, 0, 70, 10,172, 0,
- 10,173,174, 0, 0, 0, 0, 0, 10, 10,175, 2, 0, 0, 0, 0,
- 10, 10,176,173, 0, 0, 0, 0, 0, 0, 0, 10,177,178, 0, 10,
- 179, 0, 0,180,181, 0, 0, 0,182, 10, 10,183,184,185,186,187,
- 188, 10, 10,189,190, 0, 0, 0,191, 10,192,193,194, 10, 10,195,
- 188, 10, 10,196,197,106,198,103, 10, 34,199,200,201, 0, 0, 0,
- 202,203, 95, 10, 10,204,205, 2,206, 21, 22,207,208,209,210,211,
- 10, 10, 10,212,213,214,215, 0,198, 10, 10,216,217, 2, 0, 0,
- 10, 10,218,219,220,221, 0, 0, 10, 10, 10,222,223, 2, 0, 0,
- 10, 10,224,225, 2, 0, 0, 0, 10,226,227,104,228, 0, 0, 0,
- 10, 10,229,230, 0, 0, 0, 0,231,232, 10,233,234, 2, 0, 0,
- 0, 0,235, 10, 10,236,237, 0,238, 10, 10,239,240,241, 10, 10,
- 242,243, 0, 0, 0, 0, 0, 0, 22, 10,218,244, 8, 10, 71, 19,
- 10,245, 74,246, 0, 0, 0, 0,247, 10, 10,248,249, 2,250, 10,
- 251,252, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253,
- 254, 49, 10,255,256, 2, 0, 0,257,257,257,257,257,257,257,257,
- 257,257,257,258,259,260, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 10, 10, 10,261, 0, 0, 0, 0, 10, 10, 10, 10,262,263,264,264,
- 265,266, 0, 0, 0, 0,267, 0, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10,268, 0, 0, 10, 10, 10, 10, 10, 10,106, 71,
- 95,269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,270,
- 10, 10, 71,271,272, 0, 0, 0, 0, 10,273, 0, 10, 10,274, 2,
- 0, 0, 0, 0, 0, 10,275, 2, 10, 10, 10, 10,276, 2, 0, 0,
+ 10,173,174, 0, 0, 0, 0, 0, 10, 10,175, 2, 9, 10,176, 10,
+ 177, 0, 0, 0, 0, 0, 0, 0, 10, 10,178,173, 0, 0, 0, 0,
+ 0, 0, 0, 10,179,180, 0, 10,181, 0, 0,182,183, 0, 0, 0,
+ 184, 10, 10,185,186,187,188,189,190, 10, 10,191,192, 0, 0, 0,
+ 193, 10,194,195,196, 10, 10,197,190, 10, 10,198,199,106,200,103,
+ 10, 34,201,202,203, 0, 0, 0,204,205, 95, 10, 10,206,207, 2,
+ 208, 21, 22,209,210,211,212,213,214, 10, 10,215,216,217,218, 0,
+ 10, 10, 10,219,220,221,222, 0,200, 10, 10,223,224, 2, 0, 0,
+ 10, 10,225,226,227,228, 0, 0, 10, 10, 10,229,230, 2, 0, 0,
+ 10, 10,231,232, 2, 10,141, 0, 10,233,234,104,235, 0, 0, 0,
+ 10, 10,236,237, 0, 0, 0, 0,238,239, 10,240,241, 2, 0, 0,
+ 0, 0,242, 10, 10,243,244, 0,245, 10, 10,246,247,248, 10, 10,
+ 249,250, 0, 0, 0, 0, 0, 0, 22, 10,225,251, 8, 10, 71, 19,
+ 10,252, 74,253, 0, 0, 0, 0,254, 10, 10,255,256, 2,257, 10,
+ 258,259, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,260,
+ 261, 49, 10,262,263,264, 0, 0,265,265,265,265,265,265,265,265,
+ 265,265,265,266,267,268,265,265,265,265,265,265,265,265,265,269,
+ 10,270,271, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
+ 10, 10, 10,272, 0, 0, 0, 0, 0, 0, 0, 0,273, 10,274, 2,
+ 10, 10, 10, 10,275,276,277,277,278,279, 0, 0, 0, 0,280, 0,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,177, 0,281,
+ 10, 10, 10, 10, 10, 10,106, 71, 95,282, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,283, 10, 10, 71,284,285, 0, 0, 0,
+ 0, 10,286, 0, 10, 10,287, 2, 0, 0, 0, 0, 0, 10,288, 2,
+ 0, 0, 0, 0, 0, 10,289,106, 10, 10, 10, 10,290, 2, 0, 0,
130,130,130,130,130,130,130,130,163,163,163,163,163,163,163,163,
163,163,163,163,163,163,163,130,
};
@@ -366,23 +380,23 @@ hb_use_b4 (const uint8_t* a, unsigned i)
static inline uint_fast8_t
hb_use_get_category (unsigned u)
{
- return u<921600u?hb_use_u8[2809+(((hb_use_u8[593+(((hb_use_u16[((hb_use_u8[113+(((hb_use_b4(hb_use_u8,u>>1>>3>>3>>5))<<5)+((u>>1>>3>>3)&31u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:O;
+ return u<921600u?hb_use_u8[2953+(((hb_use_u8[625+(((hb_use_u16[((hb_use_u8[113+(((hb_use_b4(hb_use_u8,u>>1>>3>>3>>5))<<5)+((u>>1>>3>>3)&31u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:O;
}
#else
static const uint8_t
-hb_use_u8[3483] =
+hb_use_u8[3655] =
{
- 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 51, 57, 58, 179, 195, 61,
+ 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
- 14, 0, 1, 1, 2, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 1,
+ 15, 0, 1, 1, 2, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 1,
11, 12, 1, 1, 1, 1, 1, 1, 13, 14, 15, 16, 17, 18, 19, 1,
1, 20, 1, 1, 1, 1, 21, 1, 22, 1, 1, 1, 1, 1, 23, 24,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -390,14 +404,15 @@ hb_use_u8[3483] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29,
30, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 32, 33, 1, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 1, 48, 49, 50,
- 51, 52, 52, 52, 52, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54, 55, 1, 1, 1,
- 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 57, 58, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 1, 1,
- 1, 1, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 61, 62, 1, 63, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1,
- 1, 65, 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 0, 1, 2, 2, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 56, 57, 1, 58, 1,
+ 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 61, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 1, 1,
+ 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 64, 65, 1, 66, 67, 1, 1, 1, 68, 1, 1, 1, 1, 1,
+ 1, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 0, 1, 2, 2, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 9, 0, 0, 0, 0,
0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
@@ -414,23 +429,25 @@ hb_use_u8[3483] =
122, 0, 0, 0, 0, 0, 0, 56, 123, 124, 0, 0, 0, 0, 0, 0,
125, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 127, 128, 129, 0,
0, 130, 131, 132, 0, 0, 0, 51, 133, 0, 0, 0, 0, 134, 135, 0,
- 0, 56, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 137, 0,
- 0, 0, 101, 138, 101, 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, 148,
- 0, 149, 150, 151, 152, 146, 153, 154, 155, 156, 157, 158, 0, 159, 160, 161,
- 162, 163, 164, 165, 166, 0, 0, 0, 0, 56, 167, 168, 169, 170, 171, 172,
- 0, 0, 0, 0, 0, 56, 173, 174, 0, 56, 175, 176, 0, 56, 177, 67,
- 0, 178, 179, 180, 0, 0, 0, 0, 0, 56, 181, 0, 0, 0, 0, 0,
- 0, 182, 183, 184, 0, 0, 185, 186, 187, 188, 189, 190, 56, 191, 0, 0,
- 0, 192, 193, 194, 195, 196, 197, 0, 0, 198, 199, 200, 201, 202, 67, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 203, 204, 205, 206, 0, 0, 0, 0,
- 0, 207, 207, 207, 207, 207, 207, 207, 207, 207, 208, 209, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 67, 0, 56, 210, 0, 0, 0, 0, 0,
- 0, 56, 56, 211, 212, 213, 0, 0, 214, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 215, 0, 56, 56, 56, 216, 217, 0, 0,
- 0, 0, 0, 0, 218, 0, 0, 0, 0, 56, 219, 220, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 101, 221, 56, 222, 0, 0, 0, 0, 0, 0, 101,
- 223, 56, 56, 224, 0, 0, 0, 0, 0, 225, 225, 225, 225, 225, 225, 225,
- 225, 226, 226, 226, 226, 226, 226, 226, 227, 0, 0, 0, 0, 0, 0, 0,
+ 0, 56, 136, 7, 137, 138, 0, 0, 0, 0, 0, 0, 0, 56, 139, 0,
+ 0, 0, 101, 140, 101, 141, 142, 143, 0, 144, 145, 146, 147, 148, 149, 150,
+ 0, 151, 152, 153, 154, 148, 155, 156, 157, 158, 159, 160, 0, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 56, 173, 174, 175, 176, 177, 178,
+ 0, 0, 0, 0, 0, 56, 179, 180, 0, 56, 181, 182, 0, 56, 183, 184,
+ 185, 186, 187, 188, 0, 0, 0, 0, 0, 56, 189, 0, 0, 0, 0, 0,
+ 0, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 56, 199, 0, 0,
+ 0, 200, 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, 67, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 211, 212, 213, 214, 0, 0, 0, 0,
+ 0, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 217, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 218, 219, 220, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 67, 0, 56, 221, 0, 0, 0, 0, 0,
+ 0, 0, 0, 222, 223, 0, 0, 0, 0, 56, 56, 224, 225, 226, 0, 0,
+ 227, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 228,
+ 229, 56, 56, 56, 230, 231, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0,
+ 0, 56, 233, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 235, 56,
+ 236, 0, 0, 0, 0, 0, 0, 101, 237, 0, 0, 0, 0, 0, 0, 101,
+ 238, 56, 56, 239, 0, 0, 0, 0, 0, 240, 240, 240, 240, 240, 240, 240,
+ 240, 241, 241, 241, 241, 241, 241, 241, 242, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 0, 0,
0, 0, 0, 0, 0, 0, 3, 4, 0, 5, 0, 0, 0, 0, 0, 6,
0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
@@ -460,7 +477,7 @@ hb_use_u8[3483] =
0, 10, 29, 30, 2, 2, 2, 9, 2, 2, 2, 30, 2, 2, 0, 17,
45, 0, 0, 35, 47, 0, 0, 0, 9, 50, 51, 0, 0, 0, 0, 0,
0, 11, 29, 2, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 52, 53,
- 23, 23, 19, 31, 48, 33, 48, 34, 54, 0, 0, 0, 35, 0, 0, 0,
+ 23, 19, 20, 31, 48, 33, 48, 34, 54, 0, 0, 0, 35, 0, 0, 0,
30, 12, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 9, 0, 2, 2,
2, 2, 30, 2, 2, 2, 2, 30, 0, 2, 2, 2, 9, 0, 55, 0,
35, 23, 22, 31, 31, 18, 48, 48, 25, 0, 23, 0, 0, 0, 0, 0,
@@ -488,87 +505,94 @@ hb_use_u8[3483] =
63, 104, 16, 45, 22, 59, 21, 80, 48, 48, 76, 11, 11, 11, 105, 46,
40, 11, 106, 74, 2, 2, 2, 2, 2, 2, 2, 107, 22, 20, 20, 22,
48, 48, 22, 108, 2, 2, 2, 9, 0, 0, 0, 0, 0, 0, 109, 110,
- 111, 111, 111, 0, 0, 0, 0, 0, 0, 106, 74, 2, 2, 2, 2, 2,
- 2, 60, 61, 59, 25, 22, 112, 61, 2, 2, 2, 2, 107, 22, 23, 45,
- 45, 102, 14, 0, 0, 0, 0, 0, 0, 2, 2, 61, 18, 48, 23, 113,
- 102, 102, 102, 114, 115, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 30,
- 2, 11, 46, 116, 116, 116, 11, 116, 116, 15, 116, 116, 116, 26, 0, 40,
- 0, 0, 0, 117, 51, 11, 5, 0, 0, 0, 0, 0, 0, 0, 118, 0,
- 0, 0, 0, 0, 0, 0, 6, 119, 120, 42, 42, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 120, 120, 121, 120, 120, 120, 120, 120, 120, 120,
- 120, 0, 0, 122, 0, 0, 0, 0, 0, 0, 7, 122, 0, 0, 0, 0,
+ 110, 110, 110, 0, 0, 0, 0, 0, 0, 106, 74, 2, 2, 2, 2, 2,
+ 2, 60, 61, 59, 25, 22, 111, 61, 2, 2, 2, 2, 107, 22, 23, 45,
+ 45, 102, 14, 0, 0, 0, 0, 0, 0, 2, 2, 61, 18, 48, 23, 112,
+ 102, 102, 102, 113, 114, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 30,
+ 2, 11, 46, 115, 115, 115, 11, 115, 115, 15, 115, 115, 115, 26, 0, 40,
+ 0, 0, 0, 116, 51, 11, 5, 0, 0, 0, 0, 0, 0, 0, 117, 0,
+ 0, 0, 0, 0, 0, 0, 6, 118, 119, 42, 42, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 119, 119, 120, 119, 119, 119, 119, 119, 119, 119,
+ 119, 0, 0, 121, 0, 0, 0, 0, 0, 0, 7, 121, 0, 0, 0, 0,
0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 123, 123, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0,
- 30, 0, 0, 0, 0, 0, 0, 0, 124, 0, 123, 123, 0, 0, 0, 0,
+ 0, 0, 0, 0, 122, 122, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0,
+ 30, 0, 0, 0, 0, 0, 0, 0, 123, 0, 122, 122, 0, 0, 0, 0,
0, 2, 53, 2, 108, 2, 10, 2, 2, 2, 65, 19, 16, 0, 0, 31,
0, 2, 2, 0, 0, 0, 0, 0, 0, 29, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 125, 23, 23, 23, 23, 23, 23, 23, 126, 0, 0, 0, 0,
+ 2, 2, 2, 124, 23, 23, 23, 23, 23, 23, 23, 125, 0, 0, 0, 0,
0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 0, 0, 0, 0, 0,
- 52, 2, 2, 2, 22, 22, 127, 116, 0, 2, 2, 2, 128, 20, 59, 20,
- 113, 102, 129, 0, 0, 0, 0, 0, 0, 11, 130, 2, 2, 2, 2, 2,
- 2, 2, 131, 23, 22, 20, 48, 132, 133, 134, 0, 0, 0, 0, 0, 0,
+ 52, 2, 2, 2, 22, 22, 126, 115, 0, 2, 2, 2, 127, 20, 59, 20,
+ 112, 102, 128, 0, 0, 0, 0, 0, 0, 11, 129, 2, 2, 2, 2, 2,
+ 2, 2, 130, 23, 22, 20, 48, 131, 132, 133, 0, 0, 0, 0, 0, 0,
0, 2, 2, 52, 30, 2, 2, 2, 2, 2, 2, 2, 2, 10, 22, 59,
- 99, 76, 135, 136, 137, 0, 0, 0, 0, 2, 138, 2, 2, 2, 2, 139,
- 0, 30, 2, 42, 5, 0, 79, 15, 2, 53, 22, 140, 52, 53, 2, 2,
- 105, 10, 9, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 141, 21,
- 25, 0, 0, 142, 143, 0, 0, 0, 0, 2, 65, 45, 23, 80, 47, 144,
+ 99, 76, 134, 135, 136, 0, 0, 0, 0, 2, 137, 2, 2, 2, 2, 138,
+ 0, 30, 2, 42, 5, 0, 79, 15, 2, 53, 22, 139, 52, 53, 2, 2,
+ 105, 10, 9, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 140, 21,
+ 25, 0, 0, 141, 142, 0, 0, 0, 0, 2, 65, 45, 23, 80, 47, 143,
0, 81, 81, 81, 81, 81, 81, 81, 81, 0, 0, 0, 0, 0, 0, 0,
- 6, 120, 120, 120, 120, 121, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2,
+ 6, 119, 119, 119, 119, 120, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2,
2, 2, 9, 2, 30, 2, 2, 2, 2, 2, 30, 2, 2, 2, 30, 9,
- 0, 128, 20, 27, 31, 0, 0, 145, 146, 2, 2, 30, 2, 30, 2, 2,
- 2, 2, 2, 2, 0, 14, 37, 0, 147, 2, 2, 13, 37, 0, 30, 2,
+ 0, 127, 20, 27, 31, 0, 0, 144, 145, 2, 2, 30, 2, 30, 2, 2,
+ 2, 2, 2, 2, 0, 14, 37, 0, 146, 2, 2, 13, 37, 0, 30, 2,
2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2,
- 9, 2, 2, 11, 41, 0, 0, 0, 0, 2, 2, 2, 2, 2, 27, 38,
- 0, 2, 2, 2, 116, 116, 116, 116, 116, 148, 2, 9, 0, 0, 0, 0,
+ 9, 2, 2, 11, 41, 0, 0, 0, 0, 2, 2, 2, 0, 27, 22, 22,
+ 30, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 27, 38,
+ 0, 2, 2, 2, 115, 115, 115, 115, 115, 147, 2, 9, 0, 0, 0, 0,
0, 2, 14, 14, 0, 0, 0, 0, 0, 9, 2, 2, 9, 2, 2, 2,
- 2, 30, 2, 9, 0, 30, 2, 0, 0, 149, 150, 151, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 22, 22, 20, 20, 20, 22, 22, 134, 0, 0, 0,
- 0, 0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 2, 2, 2, 2,
- 2, 53, 52, 53, 0, 0, 0, 0, 153, 11, 74, 2, 2, 2, 2, 2,
+ 2, 30, 2, 9, 0, 30, 2, 0, 0, 148, 149, 150, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 22, 22, 20, 20, 20, 22, 22, 133, 0, 0, 0,
+ 0, 0, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 2, 2, 2, 2,
+ 2, 53, 52, 53, 0, 0, 0, 0, 152, 11, 74, 2, 2, 2, 2, 2,
2, 18, 19, 21, 16, 24, 37, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 11, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 128, 20, 22, 154,
- 22, 21, 155, 156, 2, 2, 2, 2, 2, 0, 0, 65, 157, 0, 0, 0,
+ 0, 11, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 127, 20, 22, 153,
+ 22, 21, 154, 155, 2, 2, 2, 2, 2, 0, 0, 65, 156, 0, 0, 0,
0, 2, 13, 0, 0, 0, 0, 0, 0, 2, 65, 25, 20, 20, 20, 22,
- 22, 108, 158, 0, 0, 56, 159, 31, 160, 30, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 23, 19, 22, 22, 161, 44, 0, 0, 0,
- 49, 128, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2,
+ 22, 108, 157, 0, 0, 56, 158, 31, 159, 30, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 23, 19, 22, 22, 160, 44, 0, 0, 0,
+ 49, 127, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2,
30, 2, 2, 2, 2, 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2,
- 10, 18, 19, 21, 22, 162, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9,
+ 10, 18, 19, 21, 22, 161, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9,
30, 9, 2, 30, 2, 2, 58, 17, 23, 16, 23, 47, 32, 33, 32, 34,
0, 0, 0, 0, 35, 0, 0, 0, 2, 2, 23, 0, 11, 11, 11, 46,
- 0, 11, 11, 46, 0, 0, 0, 0, 0, 2, 2, 65, 25, 20, 20, 20,
- 22, 23, 126, 15, 17, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0,
- 163, 164, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 20, 66, 99, 25,
- 160, 11, 165, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,
- 65, 25, 20, 20, 0, 48, 48, 11, 166, 37, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2, 2, 20, 0, 23, 19, 20, 20, 21, 16, 82,
- 166, 38, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 10, 167,
- 25, 20, 22, 22, 165, 9, 0, 0, 0, 2, 2, 2, 2, 2, 9, 43,
- 136, 23, 22, 20, 76, 21, 22, 0, 0, 2, 2, 2, 9, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 22, 105, 166, 37, 0,
- 0, 2, 2, 2, 9, 30, 0, 2, 2, 2, 2, 30, 9, 2, 2, 2,
- 2, 23, 23, 18, 32, 33, 12, 168, 169, 170, 171, 0, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 0, 2, 2, 2, 65, 25, 20, 20, 0, 22, 23,
- 29, 108, 0, 33, 0, 0, 0, 0, 0, 52, 20, 22, 22, 22, 140, 2,
- 2, 2, 172, 173, 11, 15, 174, 72, 175, 0, 0, 1, 147, 0, 0, 0,
- 0, 52, 20, 22, 16, 19, 20, 2, 2, 2, 2, 158, 158, 158, 176, 176,
- 176, 176, 176, 176, 15, 177, 0, 30, 0, 22, 20, 20, 31, 22, 22, 11,
- 166, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0,
- 0, 2, 2, 2, 9, 2, 30, 2, 2, 52, 22, 22, 31, 0, 38, 22,
- 27, 11, 159, 178, 174, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2,
- 2, 2, 2, 2, 2, 2, 23, 23, 47, 22, 35, 82, 68, 0, 0, 0,
- 0, 2, 179, 66, 47, 0, 0, 0, 0, 11, 180, 2, 2, 2, 2, 2,
- 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 143, 0, 0, 0, 0, 0,
- 0, 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, 182, 183, 184, 182, 181,
- 181, 185, 181, 181, 186, 187, 187, 187, 187, 187, 187, 187, 0, 0, 0, 0,
- 0, 11, 11, 11, 46, 0, 0, 0, 0, 2, 2, 2, 2, 2, 9, 0,
- 58, 188, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 0, 0, 0, 40, 116, 26, 0, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 120, 120, 120, 121, 0,
- 0, 11, 11, 11, 49, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0,
- 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 11,
- 11, 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 44, 44, 44, 92, 0,
+ 0, 11, 11, 46, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 30, 0,
+ 9, 2, 2, 2, 30, 45, 59, 20, 20, 31, 33, 32, 32, 25, 162, 29,
+ 163, 164, 37, 0, 0, 0, 0, 0, 0, 12, 26, 0, 0, 0, 0, 0,
+ 0, 2, 2, 65, 25, 20, 20, 20, 22, 23, 125, 15, 17, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0,
+ 0, 18, 19, 20, 20, 66, 99, 25, 159, 11, 167, 9, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 2, 2, 65, 25, 20, 20, 0, 48, 48, 11,
+ 168, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20,
+ 0, 23, 19, 20, 20, 21, 16, 82, 168, 38, 0, 0, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 10, 169, 25, 20, 22, 22, 167, 9, 0, 0,
+ 0, 2, 2, 2, 2, 2, 9, 43, 135, 23, 22, 20, 76, 21, 22, 0,
+ 0, 2, 2, 2, 9, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 18,
+ 19, 20, 21, 22, 105, 168, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2,
+ 2, 2, 2, 30, 9, 2, 2, 2, 2, 23, 23, 18, 32, 33, 12, 170,
+ 164, 171, 172, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2,
+ 2, 65, 25, 20, 20, 0, 22, 23, 29, 108, 0, 33, 0, 0, 0, 0,
+ 0, 52, 20, 22, 22, 22, 139, 2, 2, 2, 173, 174, 11, 15, 175, 61,
+ 176, 0, 0, 1, 146, 0, 0, 0, 0, 52, 20, 22, 16, 19, 20, 2,
+ 2, 2, 2, 157, 157, 157, 177, 177, 177, 177, 177, 177, 15, 178, 0, 30,
+ 0, 22, 20, 20, 31, 22, 22, 11, 168, 0, 61, 61, 61, 61, 61, 61,
+ 61, 66, 21, 82, 46, 0, 0, 0, 0, 2, 2, 2, 9, 2, 30, 2,
+ 2, 52, 22, 22, 31, 0, 38, 22, 27, 11, 158, 179, 180, 0, 0, 0,
+ 0, 2, 2, 2, 30, 9, 2, 2, 2, 2, 2, 2, 2, 2, 23, 23,
+ 47, 22, 35, 82, 68, 0, 0, 0, 0, 2, 181, 66, 47, 0, 0, 0,
+ 0, 11, 182, 2, 2, 2, 2, 2, 2, 2, 2, 23, 22, 20, 31, 0,
+ 48, 16, 142, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 155, 0,
+ 0, 183, 183, 183, 183, 183, 183, 183, 183, 184, 184, 184, 185, 186, 184, 183,
+ 183, 187, 183, 183, 188, 189, 189, 189, 189, 189, 189, 189, 0, 0, 0, 0,
+ 0, 183, 183, 183, 183, 183, 190, 0, 0, 2, 2, 2, 2, 2, 2, 2,
+ 22, 22, 22, 22, 22, 22, 191, 192, 193, 11, 11, 11, 46, 0, 0, 0,
+ 0, 29, 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 47,
+ 0, 2, 2, 2, 2, 2, 9, 0, 58, 194, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0,
+ 40, 115, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2, 2, 2, 2, 0, 58,
+ 37, 0, 6, 119, 119, 119, 120, 0, 0, 11, 11, 11, 49, 2, 2, 2,
+ 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,
+ 46, 2, 2, 2, 2, 2, 2, 11, 11, 2, 2, 2, 2, 2, 2, 22,
+ 22, 2, 2, 2, 2, 2, 2, 2, 20, 2, 2, 44, 44, 44, 92, 0,
0, O, O, O, GB, B, B, O, SB, O, SE, GB, O, O, WJ,FMPst,
FMPst, O, CGJ, B, O, B,VMAbv,VMAbv,VMAbv, O,VMAbv, B,CMBlw,CMBlw,CMBlw,VMAbv,
VMPst, VAbv, VPst,CMBlw, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst,
@@ -582,20 +606,21 @@ hb_use_u8[3483] =
VMPst, VBlw, VPst, CGJ, CGJ, VPst,VMAbv,VMAbv,FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,
FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB,CMAbv,CMAbv, B, GB, B, VAbv, SUB, FPst,
FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv,
- SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, H, B, O,SMAbv,SMBlw,SMAbv,SMAbv,
- SMAbv, VPst, IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ,
- CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O, H, MPst, VPst, H,VMAbv, VAbv,
- VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw,
- MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, B, B, VPre, O,VMPst, IS,
- O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS,
- B, N, N, O, HN, VPre, VBlw, VAbv, IS,CMAbv, O, VPst, B, R, R,CMBlw,
- VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst,
- VAbv,VMAbv, VPst, IS, R, MPst, R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, R, MBlw, MBlw,
- GB, FBlw, FBlw,CMAbv, IS, VBlw, IS, GB, VAbv, R,VMPst, G, G, J, J, J,
- SB, SE, J, HR, G, G, HM, HM, HM, O, VBlw,
+ SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst,
+ IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ,
+ WJ, WJ, O,FMPst, O, SB, SE, O, H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B,
+ VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre,
+ MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, B, B, VPre, O,VMPst, IS, O,VMPst,
+ VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N,
+ N, O, HN, VPre, VBlw, VAbv, IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre,
+ VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv,CMBlw, IS, R,FMAbv, B, CS, CS, H,
+ CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, MPst, R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS,
+ SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw, IS, R, MBlw, GB, VAbv, R,VMPst, G,
+ G, J, J, J, SB, SE, J, HR, G, G, HM, HM, HM, G, O, MPre,
+ MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw,
};
static const uint16_t
-hb_use_u16[456] =
+hb_use_u16[486] =
{
0, 0, 1, 2, 0, 3, 4, 5, 0, 6, 7, 0, 8, 0, 9, 10,
11, 12, 10, 13, 14, 10, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -614,18 +639,20 @@ hb_use_u16[456] =
148,149,150, 10, 10,151,152, 2,153, 99,154,155,156, 2, 10,157,
10,158,159, 0,160,161,162, 2,163, 0, 0,164, 0,165, 0,166,
166,167, 34,168,169,170, 10,171, 95, 0,172, 0, 10,173,174, 0,
- 175, 2,176,173,177,178,179, 0, 0,180,181, 0,182, 10, 10,183,
- 184,185,186,187,188, 10, 10,189,190, 0,191, 10,192,193,194, 10,
- 10,195, 10,196,197,106,198,103, 10, 34,199,200,201, 0,202,203,
- 95, 10, 10,204,205, 2,206, 21, 22,207,208,209,210,211, 10,212,
- 213,214,215, 0,198, 10, 10,216,217, 2,218,219,220,221, 10,222,
- 223, 2,224,225, 10,226,227,104,228, 0,229,230,231,232, 10,233,
- 234, 2,235, 10, 10,236,237, 0,238, 10, 10,239,240,241,242,243,
- 22, 10,218,244, 8, 10, 71, 19, 10,245, 74,246,247, 10, 10,248,
- 249, 2,250, 10,251,252, 10,253,254, 49, 10,255,256, 2,257,257,
- 257,258,259,260, 10,261,262,263,264,264,265,266,267, 0, 10,268,
- 106, 71, 95,269, 0,270, 71,271,272, 0,273, 0,274, 2,275, 2,
- 276, 2,130,130,163,163,163,130,
+ 175, 2,176, 10,177, 0,178,173,179,180,181, 0, 0,182,183, 0,
+ 184, 10, 10,185,186,187,188,189,190, 10, 10,191,192, 0,193, 10,
+ 194,195,196, 10, 10,197, 10,198,199,106,200,103, 10, 34,201,202,
+ 203, 0,204,205, 95, 10, 10,206,207, 2,208, 21, 22,209,210,211,
+ 212,213,214, 10, 10,215,216,217,218, 0, 10,219,220,221,222, 0,
+ 200, 10, 10,223,224, 2,225,226,227,228, 10,229,230, 2,231,232,
+ 2, 10,141, 0, 10,233,234,104,235, 0,236,237,238,239, 10,240,
+ 241, 2,242, 10, 10,243,244, 0,245, 10, 10,246,247,248,249,250,
+ 22, 10,225,251, 8, 10, 71, 19, 10,252, 74,253,254, 10, 10,255,
+ 256, 2,257, 10,258,259, 10,260,261, 49, 10,262,263,264,265,265,
+ 265,266,267,268,265,269, 10,270,271, 2, 10,272,273, 10,274, 2,
+ 275,276,277,277,278,279,280, 0, 10,177, 0,281,106, 71, 95,282,
+ 0,283, 71,284,285, 0,286, 0,287, 2,288, 2,289,106,290, 2,
+ 130,130,163,163,163,130,
};
static inline unsigned
@@ -636,7 +663,7 @@ hb_use_b4 (const uint8_t* a, unsigned i)
static inline uint_fast8_t
hb_use_get_category (unsigned u)
{
- return u<921600u?hb_use_u8[3105+(((hb_use_u8[889+(((hb_use_u16[((hb_use_u8[353+(((hb_use_u8[113+(((hb_use_b4(hb_use_u8,u>>1>>3>>1>>3>>4))<<4)+((u>>1>>3>>1>>3)&15u))])<<3)+((u>>1>>3>>1)&7u))])<<1)+((u>>1>>3)&1u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:O;
+ return u<921600u?hb_use_u8[3265+(((hb_use_u8[937+(((hb_use_u16[((hb_use_u8[369+(((hb_use_u8[113+(((hb_use_b4(hb_use_u8,u>>1>>3>>1>>3>>4))<<4)+((u>>1>>3>>1>>3)&15u))])<<3)+((u>>1>>3>>1)&7u))])<<1)+((u>>1>>3)&1u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:O;
}
#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc
index d1ed8945966..dbe781e5625 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc
@@ -10,8 +10,8 @@
* # Date: 2015-03-12, 21:17:00 GMT [AG]
* # Date: 2019-11-08, 23:22:00 GMT [AG]
*
- * # Scripts-15.1.0.txt
- * # Date: 2023-07-28, 16:01:07 GMT
+ * # Scripts-16.0.0.txt
+ * # Date: 2024-04-30, 21:48:40 GMT
*/
#include "hb.hh"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh
index 9097be79ee2..8a094739cb7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh
@@ -387,6 +387,15 @@ hb_ot_shaper_categorize (hb_script_t script,
case HB_SCRIPT_KAWI:
case HB_SCRIPT_NAG_MUNDARI:
+ /* Unicode-16.0 additions */
+ case HB_SCRIPT_GARAY:
+ case HB_SCRIPT_GURUNG_KHEMA:
+ case HB_SCRIPT_KIRAT_RAI:
+ case HB_SCRIPT_OL_ONAL:
+ case HB_SCRIPT_SUNUWAR:
+ case HB_SCRIPT_TODHRI:
+ case HB_SCRIPT_TULU_TIGALARI:
+
/* If the designer designed the font for the 'DFLT' script,
* (or we ended up arbitrarily pick 'latn'), use the default shaper.
* Otherwise, use the specific shaper.
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh
index ea5459ef4e2..7a46be1fffc 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh
@@ -354,10 +354,10 @@ struct AxisValue
{
switch (u.format)
{
- case 1: return u.format1.get_value ();
- case 2: return u.format2.get_value ();
- case 3: return u.format3.get_value ();
- case 4: return u.format4.get_axis_record (axis_index).get_value ();
+ case 1: hb_barrier (); return u.format1.get_value ();
+ case 2: hb_barrier (); return u.format2.get_value ();
+ case 3: hb_barrier (); return u.format3.get_value ();
+ case 4: hb_barrier (); return u.format4.get_axis_record (axis_index).get_value ();
default:return 0.f;
}
}
@@ -366,9 +366,9 @@ struct AxisValue
{
switch (u.format)
{
- case 1: return u.format1.get_axis_index ();
- case 2: return u.format2.get_axis_index ();
- case 3: return u.format3.get_axis_index ();
+ case 1: hb_barrier (); return u.format1.get_axis_index ();
+ case 2: hb_barrier (); return u.format2.get_axis_index ();
+ case 3: hb_barrier (); return u.format3.get_axis_index ();
/* case 4: Makes more sense for variable fonts which are handled by fvar in hb-style */
default:return -1;
}
@@ -378,10 +378,10 @@ struct AxisValue
{
switch (u.format)
{
- case 1: return u.format1.get_value_name_id ();
- case 2: return u.format2.get_value_name_id ();
- case 3: return u.format3.get_value_name_id ();
- case 4: return u.format4.get_value_name_id ();
+ case 1: hb_barrier (); return u.format1.get_value_name_id ();
+ case 2: hb_barrier (); return u.format2.get_value_name_id ();
+ case 3: hb_barrier (); return u.format3.get_value_name_id ();
+ case 4: hb_barrier (); return u.format4.get_value_name_id ();
default:return HB_OT_NAME_ID_INVALID;
}
}
@@ -392,10 +392,10 @@ struct AxisValue
if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value ();
TRACE_DISPATCH (this, u.format);
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
- case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
- case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
+ case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
+ case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
+ case 4: hb_barrier (); return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
default:return_trace (c->default_return_value ());
}
}
@@ -405,10 +405,10 @@ struct AxisValue
{
switch (u.format)
{
- case 1: return u.format1.keep_axis_value (axis_records, user_axes_location);
- case 2: return u.format2.keep_axis_value (axis_records, user_axes_location);
- case 3: return u.format3.keep_axis_value (axis_records, user_axes_location);
- case 4: return u.format4.keep_axis_value (axis_records, user_axes_location);
+ case 1: hb_barrier (); return u.format1.keep_axis_value (axis_records, user_axes_location);
+ case 2: hb_barrier (); return u.format2.keep_axis_value (axis_records, user_axes_location);
+ case 3: hb_barrier (); return u.format3.keep_axis_value (axis_records, user_axes_location);
+ case 4: hb_barrier (); return u.format4.keep_axis_value (axis_records, user_axes_location);
default:return false;
}
}
@@ -422,10 +422,10 @@ struct AxisValue
switch (u.format)
{
- case 1: return_trace (u.format1.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
- case 3: return_trace (u.format3.sanitize (c));
- case 4: return_trace (u.format4.sanitize (c));
+ case 1: hb_barrier (); return_trace (u.format1.sanitize (c));
+ case 2: hb_barrier (); return_trace (u.format2.sanitize (c));
+ case 3: hb_barrier (); return_trace (u.format3.sanitize (c));
+ case 4: hb_barrier (); return_trace (u.format4.sanitize (c));
default:return_trace (true);
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh
index 7fc9b7c7411..efbbfb25d7b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh
@@ -238,8 +238,8 @@ struct tuple_delta_t
/* compiled data: header and deltas
* compiled point data is saved in a hashmap within tuple_variations_t cause
* some point sets might be reused by different tuple variations */
- hb_vector_t<char> compiled_tuple_header;
- hb_vector_t<char> compiled_deltas;
+ hb_vector_t<unsigned char> compiled_tuple_header;
+ hb_vector_t<unsigned char> compiled_deltas;
/* compiled peak coords, empty for non-gvar tuples */
hb_vector_t<char> compiled_peak_coords;
@@ -517,7 +517,7 @@ struct tuple_delta_t
static bool compile_deltas (const hb_vector_t<bool> &point_indices,
const hb_vector_t<double> &x_deltas,
const hb_vector_t<double> &y_deltas,
- hb_vector_t<char> &compiled_deltas /* OUT */)
+ hb_vector_t<unsigned char> &compiled_deltas /* OUT */)
{
hb_vector_t<int> rounded_deltas;
if (unlikely (!rounded_deltas.alloc (point_indices.length)))
@@ -560,7 +560,7 @@ struct tuple_delta_t
return compiled_deltas.resize (encoded_len);
}
- static unsigned compile_deltas (hb_array_t<char> encoded_bytes,
+ static unsigned compile_deltas (hb_array_t<unsigned char> encoded_bytes,
hb_array_t<const int> deltas)
{
return TupleValues::compile (deltas, encoded_bytes);
@@ -705,20 +705,20 @@ struct tuple_delta_t
opt_indices.arrayZ[i] = false;
}
- hb_vector_t<char> opt_point_data;
+ hb_vector_t<unsigned char> opt_point_data;
if (!compile_point_set (opt_indices, opt_point_data))
return false;
- hb_vector_t<char> opt_deltas_data;
+ hb_vector_t<unsigned char> opt_deltas_data;
if (!compile_deltas (opt_indices,
is_comp_glyph_wo_deltas ? opt_deltas_x : deltas_x,
is_comp_glyph_wo_deltas ? opt_deltas_y : deltas_y,
opt_deltas_data))
return false;
- hb_vector_t<char> point_data;
+ hb_vector_t<unsigned char> point_data;
if (!compile_point_set (indices, point_data))
return false;
- hb_vector_t<char> deltas_data;
+ hb_vector_t<unsigned char> deltas_data;
if (!compile_deltas (indices, deltas_x, deltas_y, deltas_data))
return false;
@@ -740,7 +740,7 @@ struct tuple_delta_t
}
static bool compile_point_set (const hb_vector_t<bool> &point_indices,
- hb_vector_t<char>& compiled_points /* OUT */)
+ hb_vector_t<unsigned char>& compiled_points /* OUT */)
{
unsigned num_points = 0;
for (bool i : point_indices)
@@ -1134,7 +1134,7 @@ struct TupleVariationData
continue;
}
- hb_vector_t<char> compiled_point_data;
+ hb_vector_t<unsigned char> compiled_point_data;
if (!tuple_delta_t::compile_point_set (*points_set, compiled_point_data))
return false;
@@ -1663,7 +1663,9 @@ struct item_variations_t
}
}
- if (!all_regions || !all_unique_regions) return false;
+ /* regions are empty means no variation data, return true */
+ if (!all_regions || !all_unique_regions) return true;
+
if (!region_list.alloc (all_regions.get_population ()))
return false;
@@ -1728,7 +1730,8 @@ struct item_variations_t
bool as_item_varstore (bool optimize=true, bool use_no_variation_idx=true)
{
- if (!region_list) return false;
+ /* return true if no variation data */
+ if (!region_list) return true;
unsigned num_cols = region_list.length;
/* pre-alloc a 2D vector for all sub_table's VarData rows */
unsigned total_rows = 0;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh
index 7bbaed35e5d..b021a00f669 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh
@@ -359,7 +359,10 @@ struct gvar
out->glyphCountX = hb_min (0xFFFFu, num_glyphs);
unsigned glyph_var_data_size = glyph_vars.compiled_byte_size ();
- bool long_offset = glyph_var_data_size & ~0xFFFFu || force_long_offsets;
+ /* According to the spec: If the short format (Offset16) is used for offsets,
+ * the value stored is the offset divided by 2, so the maximum data size should
+ * be 2 * 0xFFFFu, which is 0x1FFFEu */
+ bool long_offset = glyph_var_data_size > 0x1FFFEu || force_long_offsets;
out->flags = long_offset ? 1 : 0;
HBUINT8 *glyph_var_data_offsets = c->allocate_size<HBUINT8> ((long_offset ? 4 : 2) * (num_glyphs + 1), false);
@@ -440,7 +443,10 @@ struct gvar
subset_data_size += get_glyph_var_data_bytes (c->source_blob, glyph_count, old_gid).length;
}
- bool long_offset = (subset_data_size & ~0xFFFFu);
+ /* According to the spec: If the short format (Offset16) is used for offsets,
+ * the value stored is the offset divided by 2, so the maximum data size should
+ * be 2 * 0xFFFFu, which is 0x1FFFEu */
+ bool long_offset = subset_data_size > 0x1FFFEu;
#ifdef HB_EXPERIMENTAL_API
long_offset = long_offset || (c->plan->flags & HB_SUBSET_FLAGS_IFTB_REQUIREMENTS);
#endif
@@ -540,7 +546,7 @@ struct gvar
unsigned get_offset (unsigned glyph_count, unsigned i) const
{
if (unlikely (i > glyph_count)) return 0;
- _hb_compiler_memory_r_barrier ();
+ hb_barrier ();
return is_long_offset () ? get_long_offset_array ()[i] : get_short_offset_array ()[i] * 2;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh
index 3a37f7daec5..2d4491e0717 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh
@@ -70,7 +70,10 @@ struct hb_paint_extents_context_t
const hb_transform_t &t = transforms.tail ();
t.transform_extents (extents);
- clips.push (hb_bounds_t {extents});
+ auto bounds = hb_bounds_t {extents};
+ bounds.intersect (clips.tail ());
+
+ clips.push (bounds);
}
void pop_clip ()
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc
index bd5cb5c6be0..fbab091e8c2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc
@@ -61,8 +61,8 @@ _hb_ratio_to_angle (float r)
* @style_tag: a style tag.
*
* Searches variation axes of a #hb_font_t object for a specific axis first,
- * if not set, then tries to get default style values from different
- * tables of the font.
+ * if not set, first tries to get default style values in `STAT` table
+ * then tries to polyfill from different tables of the font.
*
* Returns: Corresponding axis or default value to a style tag.
*
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc
index 9c9117d52fc..eb5cb0c625e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc
@@ -666,9 +666,6 @@ OT::cff2::accelerator_subset_t::serialize (hb_serialize_context_t *c,
bool
OT::cff2::accelerator_subset_t::subset (hb_subset_context_t *c) const
{
- if (c->plan->normalized_coords && !c->plan->all_axes_pinned)
- fprintf (stdout, "warning: CFF partial instancing is not supported.\n");
-
cff2_subset_plan cff2_plan;
if (unlikely (!cff2_plan.create (*this, c->plan))) return false;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc
index ca903e2707e..ec015759904 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc
@@ -376,7 +376,7 @@ double renormalizeValue (double v, const Triple &triple,
assert (lower <= def && def <= upper);
if (!extrapolate)
- v = hb_max (hb_min (v, upper), lower);
+ v = hb_clamp (v, lower, upper);
if (v == def)
return 0.0;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc
index f10ef54dbdc..7cea9f18374 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc
@@ -594,14 +594,20 @@ static void _attach_accelerator_data (hb_subset_plan_t* plan,
* @input: input to use for the subsetting.
*
* Subsets a font according to provided input. Returns nullptr
- * if the subset operation fails.
+ * if the subset operation fails or the face has no glyphs.
*
* Since: 2.9.0
**/
hb_face_t *
hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input)
{
- if (unlikely (!input || !source)) return hb_face_get_empty ();
+ if (unlikely (!input || !source)) return nullptr;
+
+ if (unlikely (!source->get_num_glyphs ()))
+ {
+ DEBUG_MSG (SUBSET, nullptr, "No glyphs in source font.");
+ return nullptr;
+ }
hb_subset_plan_t *plan = hb_subset_plan_create_or_fail (source, input);
if (unlikely (!plan)) {
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh
index 8d3807a80f0..8731a0bcf8d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh
@@ -4,7 +4,7 @@
*
* ./gen-ucd-table.py ucd.nounihan.grouped.xml
*
- * on file with this description: Unicode 15.1.0
+ * on file with this description: Unicode 16.0.0
*/
#ifndef HB_UCD_TABLE_HH
@@ -13,7 +13,7 @@
#include "hb.hh"
static const hb_script_t
-_hb_ucd_sc_map[165] =
+_hb_ucd_sc_map[172] =
{
HB_SCRIPT_COMMON, HB_SCRIPT_INHERITED,
HB_SCRIPT_UNKNOWN, HB_SCRIPT_ARABIC,
@@ -97,7 +97,10 @@ _hb_ucd_sc_map[165] =
HB_SCRIPT_OLD_UYGHUR, HB_SCRIPT_TANGSA,
HB_SCRIPT_TOTO, HB_SCRIPT_VITHKUQI,
HB_SCRIPT_MATH, HB_SCRIPT_KAWI,
- HB_SCRIPT_NAG_MUNDARI,
+ HB_SCRIPT_NAG_MUNDARI, HB_SCRIPT_GARAY,
+ HB_SCRIPT_GURUNG_KHEMA, HB_SCRIPT_KIRAT_RAI,
+ HB_SCRIPT_OL_ONAL, HB_SCRIPT_SUNUWAR,
+ HB_SCRIPT_TODHRI, HB_SCRIPT_TULU_TIGALARI,
};
static const uint16_t
_hb_ucd_dm1_p0_map[825] =
@@ -868,7 +871,7 @@ _hb_ucd_dm2_u32_map[638] =
HB_CODEPOINT_ENCODE3_11_7_14 (0x04E9u, 0x0308u, 0x04EBu),
};
static const uint64_t
-_hb_ucd_dm2_u64_map[388] =
+_hb_ucd_dm2_u64_map[408] =
{
HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05B7u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05B8u, 0x0000u),
HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05BCu, 0x0000u), HB_CODEPOINT_ENCODE3 (0x05D1u, 0x05BCu, 0x0000u),
@@ -1051,13 +1054,23 @@ _hb_ucd_dm2_u64_map[388] =
HB_CODEPOINT_ENCODE3 (0x30F0u, 0x3099u, 0x30F8u), HB_CODEPOINT_ENCODE3 (0x30F1u, 0x3099u, 0x30F9u),
HB_CODEPOINT_ENCODE3 (0x30F2u, 0x3099u, 0x30FAu), HB_CODEPOINT_ENCODE3 (0x30FDu, 0x3099u, 0x30FEu),
HB_CODEPOINT_ENCODE3 (0xFB49u, 0x05C1u, 0x0000u), HB_CODEPOINT_ENCODE3 (0xFB49u, 0x05C2u, 0x0000u),
+ HB_CODEPOINT_ENCODE3 (0x105D2u, 0x0307u, 0x105C9u), HB_CODEPOINT_ENCODE3 (0x105DAu, 0x0307u, 0x105E4u),
HB_CODEPOINT_ENCODE3 (0x11099u, 0x110BAu, 0x1109Au),HB_CODEPOINT_ENCODE3 (0x1109Bu, 0x110BAu, 0x1109Cu),
HB_CODEPOINT_ENCODE3 (0x110A5u, 0x110BAu, 0x110ABu),HB_CODEPOINT_ENCODE3 (0x11131u, 0x11127u, 0x1112Eu),
HB_CODEPOINT_ENCODE3 (0x11132u, 0x11127u, 0x1112Fu),HB_CODEPOINT_ENCODE3 (0x11347u, 0x1133Eu, 0x1134Bu),
- HB_CODEPOINT_ENCODE3 (0x11347u, 0x11357u, 0x1134Cu),HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114B0u, 0x114BCu),
- HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114BAu, 0x114BBu),HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114BDu, 0x114BEu),
- HB_CODEPOINT_ENCODE3 (0x115B8u, 0x115AFu, 0x115BAu),HB_CODEPOINT_ENCODE3 (0x115B9u, 0x115AFu, 0x115BBu),
- HB_CODEPOINT_ENCODE3 (0x11935u, 0x11930u, 0x11938u), HB_CODEPOINT_ENCODE3 (0x1D157u, 0x1D165u, 0x0000u),
+ HB_CODEPOINT_ENCODE3 (0x11347u, 0x11357u, 0x1134Cu),HB_CODEPOINT_ENCODE3 (0x11382u, 0x113C9u, 0x11383u),
+ HB_CODEPOINT_ENCODE3 (0x11384u, 0x113BBu, 0x11385u),HB_CODEPOINT_ENCODE3 (0x1138Bu, 0x113C2u, 0x1138Eu),
+ HB_CODEPOINT_ENCODE3 (0x11390u, 0x113C9u, 0x11391u),HB_CODEPOINT_ENCODE3 (0x113C2u, 0x113B8u, 0x113C7u),
+ HB_CODEPOINT_ENCODE3 (0x113C2u, 0x113C2u, 0x113C5u),HB_CODEPOINT_ENCODE3 (0x113C2u, 0x113C9u, 0x113C8u),
+ HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114B0u, 0x114BCu),HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114BAu, 0x114BBu),
+ HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114BDu, 0x114BEu),HB_CODEPOINT_ENCODE3 (0x115B8u, 0x115AFu, 0x115BAu),
+ HB_CODEPOINT_ENCODE3 (0x115B9u, 0x115AFu, 0x115BBu),HB_CODEPOINT_ENCODE3 (0x11935u, 0x11930u, 0x11938u),
+ HB_CODEPOINT_ENCODE3 (0x1611Eu, 0x1611Eu, 0x16121u),HB_CODEPOINT_ENCODE3 (0x1611Eu, 0x1611Fu, 0x16123u),
+ HB_CODEPOINT_ENCODE3 (0x1611Eu, 0x16120u, 0x16125u),HB_CODEPOINT_ENCODE3 (0x1611Eu, 0x16129u, 0x16122u),
+ HB_CODEPOINT_ENCODE3 (0x16121u, 0x1611Fu, 0x16126u),HB_CODEPOINT_ENCODE3 (0x16121u, 0x16120u, 0x16128u),
+ HB_CODEPOINT_ENCODE3 (0x16122u, 0x1611Fu, 0x16127u),HB_CODEPOINT_ENCODE3 (0x16129u, 0x1611Fu, 0x16124u),
+ HB_CODEPOINT_ENCODE3 (0x16D63u, 0x16D67u, 0x16D69u),HB_CODEPOINT_ENCODE3 (0x16D67u, 0x16D67u, 0x16D68u),
+ HB_CODEPOINT_ENCODE3 (0x16D69u, 0x16D67u, 0x16D6Au), HB_CODEPOINT_ENCODE3 (0x1D157u, 0x1D165u, 0x0000u),
HB_CODEPOINT_ENCODE3 (0x1D158u, 0x1D165u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D16Eu, 0x0000u),
HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D16Fu, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D170u, 0x0000u),
HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D171u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D172u, 0x0000u),
@@ -1069,90 +1082,59 @@ _hb_ucd_dm2_u64_map[388] =
#ifndef HB_OPTIMIZE_SIZE
static const uint8_t
-_hb_ucd_u8[17884] =
+_hb_ucd_u8[17612] =
{
- 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 9, 10, 7, 7, 7, 7, 11, 12, 13, 13, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 22, 22, 22, 22, 24, 7, 7,
- 25, 26, 22, 22, 22, 27, 28, 29, 22, 30, 31, 32, 33, 34, 35, 36,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 37, 7, 38, 39, 7, 40, 7, 7, 7, 41, 22, 42,
- 7, 7, 43, 7, 44, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 45, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 46,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 47,
+ 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 5, 5, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 5, 17, 15, 18, 19, 20, 21, 22, 23,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 25, 26, 5, 27, 28,
+ 5, 29, 30, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 31, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 32,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 33,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 34, 35, 36, 37, 38, 39, 34, 34, 34, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 64, 65, 66, 67, 68, 69, 70, 71, 69, 72, 73,
- 69, 69, 64, 74, 64, 64, 75, 76, 77, 78, 79, 80, 81, 82, 69, 83,
- 84, 85, 86, 87, 88, 89, 69, 69, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 90, 34, 34, 34, 34,
- 91, 34, 34, 34, 34, 34, 34, 34, 34, 92, 34, 34, 93, 94, 95, 96,
- 97, 98, 99,100,101,102,103,104, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,105,
- 106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,
- 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,
- 107,107, 34, 34,108,109,110,111, 34, 34,112,113,114,115,116,117,
- 118,119,120,121,122,123,124,125,126,127,128,129, 34, 34,130,131,
- 132,133,134,135,136,137,138,139,140,141,142,122,143,144,145,146,
- 147,148,149,150,151,152,153,122,154,155,122,156,157,158,159,122,
- 160,161,162,163,164,165,166,122,167,168,169,170,122,171,172,173,
- 34, 34, 34, 34, 34, 34, 34,174,175, 34,176,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,177,
- 34, 34, 34, 34, 34, 34, 34, 34,178,122,122,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,
- 122,122,122,122,122,122,122,122, 34, 34, 34, 34,179,122,122,122,
- 34, 34, 34, 34,180,181,182,183,122,122,122,122,184,185,186,187,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,188,
- 34, 34, 34, 34, 34, 34, 34, 34, 34,189,190,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,191,
- 34, 34,192, 34, 34,193,122,122,122,122,122,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,194,195,122,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,122,122,122,122,122,122,196,197,
- 69,198,199,200,201,202,203,122,204,205,206,207,208,209,210,211,
- 69, 69, 69, 69,212,213,122,122,122,122,122,122,122,122,214,122,
- 215,216,217,122,122,218,122,122,122,219,122,122,122,122,122,220,
- 34,221,222,122,122,122,122,122,223,224,225,122,226,227,122,122,
- 228,229,230,231,232,122, 69,233, 69, 69, 69, 69, 69,234,235,236,
- 237,238, 69, 69,239,240, 69,241,122,122,122,122,122,122,122,122,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,242, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,243, 34,
- 244, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,245, 34, 34,
- 34, 34, 34, 34, 34, 34, 34,246, 34, 34, 34, 34,247,122,122,122,
- 34, 34, 34, 34,248,122,122,122,122,122,122,122,122,122,122,122,
- 34, 34, 34, 34, 34, 34,249, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34,250,122,122,122,122,122,122,122,122,
- 251,122,252,253,122,122,122,122,122,122,122,122,122,122,122,122,
- 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,254,
- 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,255,
+ 16, 17, 18, 19, 20, 17, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 33, 41, 42, 43, 44, 45,
+ 46, 47, 48, 39, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 49, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 50, 17, 17, 17, 51, 17, 52, 53, 54, 55, 56, 57, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 58, 59, 59, 59, 59, 59, 59, 59, 59,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 17, 61, 62, 17, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 17, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 17, 17, 17, 97, 98, 99,100,100,100,100,100,100,100,100,100,101,
+ 17, 17, 17, 17,102, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17,103, 17, 17,104,100,100,100,100,100,100,100,100,100,
+ 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
+ 100,105,100,100,100,100,100,100, 17, 17,106,107,100,108,109,110,
+ 17, 17, 17, 17, 17, 17, 17,111, 17, 17, 17, 17,112,113,100,100,
+ 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,114,
+ 17,115,116,100,100,100,100,100,100,100,100,100,117,100,100,100,
+ 100,100,100,100,100,100,100,100,100,100,100,100,118, 39,119,120,
+ 121,122,123,124,125,126,127,128, 39, 39,129,100,100,100,100,130,
+ 131,132,133,100,134,135,100,136,137,138,100,100,139,140,141,100,
+ 142,143,144,145, 39, 39,146,147,148, 39,149,150,100,100,100,100,
+ 17, 17, 17, 17, 17, 17,151, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17,152,153, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,154, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,155, 17, 17,156,100,
+ 100,100,100,100,100,100,100,100, 17, 17,157,100,100,100,100,100,
+ 17, 17, 17,158, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17,159,100,100,100,100,100,100,100,100,100,100,100,100,
+ 160,161,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,162,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,163,
0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2,
7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16,
@@ -1189,7 +1171,7 @@ _hb_ucd_u8[17884] =
43, 43, 40, 21, 2, 81, 57, 20, 36, 36, 36, 43, 43, 75, 43, 43,
43, 43, 75, 43, 75, 43, 43, 44, 2, 2, 2, 2, 2, 2, 2, 64,
36, 36, 36, 36, 70, 43, 44, 64, 36, 36, 36, 36, 36, 61, 44, 44,
- 36, 36, 36, 36, 82, 36, 36, 61, 65, 44, 44, 44, 43, 43, 43, 43,
+ 36, 36, 36, 36, 82, 36, 36, 61, 65, 44, 44, 57, 43, 43, 43, 43,
36, 36, 36, 36, 83, 43, 43, 43, 43, 84, 43, 43, 43, 43, 43, 43,
43, 85, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 85, 71, 86,
87, 43, 43, 43, 85, 86, 87, 86, 70, 43, 43, 43, 36, 36, 36, 36,
@@ -1262,13 +1244,13 @@ _hb_ucd_u8[17884] =
85, 85, 87, 43, 43, 43, 85, 86, 86, 87, 43, 43, 43, 43, 80, 57,
2, 2, 2, 88, 2, 2, 2, 44, 43, 43, 43, 43, 43, 43, 43,109,
43, 43, 43, 43, 43, 43, 43, 80, 43, 43, 98, 36, 36, 36, 36, 36,
- 36, 36, 85, 43, 43, 85, 85, 86, 86, 85, 98, 36, 36, 36, 61, 44,
- 97, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 21, 64,
+ 36, 36, 85, 43, 43, 85, 85, 86, 86, 85, 98, 36, 36, 36, 61, 2,
+ 97, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 21, 2,
43, 98, 36, 36, 36, 36, 36, 36, 94, 43, 43, 86, 43, 87, 43, 36,
36, 36, 36, 85, 43, 86, 87, 87, 43, 86, 44, 44, 44, 44, 2, 2,
36, 36, 86, 86, 86, 86, 43, 43, 43, 43, 86, 43, 44, 93, 2, 2,
7, 7, 7, 7, 7, 44, 62, 36, 36, 36, 36, 36, 40, 40, 40, 2,
- 16, 16, 16, 16,110, 44, 44, 44, 11, 11, 11, 11, 11, 47, 48, 11,
+ 16, 16, 16, 16, 34,110, 44, 44, 11, 11, 11, 11, 11, 47, 48, 11,
2, 2, 2, 2, 44, 44, 44, 44, 43, 60, 43, 43, 43, 43, 43, 43,
85, 43, 43, 43, 71, 36, 70, 36, 36, 36, 71, 94, 43, 61, 44, 44,
16, 16, 16, 16, 16, 16, 40, 40, 40, 40, 40, 40, 40, 45, 16, 16,
@@ -1296,33 +1278,33 @@ _hb_ucd_u8[17884] =
67, 67, 67, 67, 4, 4, 67, 67, 8, 67, 67, 67,145,146, 67, 67,
67, 67, 67, 67, 67, 67,144, 67, 67, 67, 67, 67, 67, 26, 8, 8,
8, 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8,
- 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 92, 44, 44, 44, 44,
- 67, 67, 67, 67, 67, 92, 44, 44, 27, 27, 27, 27, 27, 27, 67, 67,
- 67, 67, 67, 67, 67, 27, 27, 27, 67, 67, 67, 26, 67, 67, 67, 67,
- 26, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8, 8, 8,
- 67, 67, 67, 67, 67, 67, 67, 26, 67, 67, 67, 67, 4, 4, 4, 4,
- 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67,
- 8, 8,129,147, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4,
- 8,129,148,148,148,148,148,148,148,148,148,148,147, 8, 8, 8,
- 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8,
- 8, 8,144, 26, 8, 8,144, 67, 67, 67, 44, 67, 67, 67, 67, 67,
- 67, 67, 67, 55, 67, 67, 67, 67, 32, 11, 32, 34, 34, 34, 34, 11,
- 32, 32, 34, 16, 16, 16, 40, 11, 32, 32,140, 67, 67,138, 34,149,
- 43, 32, 44, 44, 93, 2, 99, 2, 16, 16, 16,150, 44, 44,150, 44,
- 36, 36, 36, 36, 44, 44, 44, 52, 64, 44, 44, 44, 44, 44, 44, 57,
- 36, 36, 36, 61, 44, 44, 44, 44, 36, 36, 36, 61, 36, 36, 36, 61,
- 2,121,121, 2,125,126,121, 2, 2, 2, 2, 6, 2,108,121, 2,
- 121, 4, 4, 4, 4, 2, 2, 88, 2, 2, 2, 2, 2,120, 2, 2,
- 108,151, 2, 2, 2, 2, 2, 2, 67, 2,152,148,148,148,153, 44,
- 67, 67, 67, 67, 67, 55, 67, 67, 67, 67, 44, 44, 44, 44, 44, 44,
- 67, 67, 67, 44, 44, 44, 44, 44, 1, 2,154,155, 4, 4, 4, 4,
- 4, 67, 4, 4, 4, 4,156,157,158,105,105,105,105, 43, 43, 86,
- 159, 40, 40, 67,105,160, 63, 67, 36, 36, 36, 61, 57,161,162, 69,
- 36, 36, 36, 36, 36, 63, 40, 69, 44, 44, 62, 36, 36, 36, 36, 36,
- 67, 27, 27, 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 44, 55,
- 67, 67, 67, 67, 67, 67, 67, 92, 27, 27, 27, 27, 27, 67, 67, 67,
- 67, 67, 67, 67, 27, 27, 27, 27,163, 27, 27, 27, 27, 27, 27, 27,
- 36, 36, 83, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,164, 2,
+ 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 92, 44, 44,
+ 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27,
+ 67, 67, 67, 26, 67, 67, 67, 67, 26, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 26,
+ 67, 67, 67, 67, 4, 4, 4, 4, 4, 4, 4, 27, 27, 27, 27, 27,
+ 27, 27, 67, 67, 67, 67, 67, 67, 8, 8,129,147, 8, 8, 8, 8,
+ 8, 8, 8, 4, 4, 4, 4, 4, 8,129,148,148,148,148,148,148,
+ 148,148,148,148,147, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8,
+ 8, 8, 8, 8, 8, 8, 4, 8, 8, 8,144, 26, 8, 8,144, 67,
+ 67, 67, 44, 67, 67, 67, 67, 67, 67, 67, 67, 55, 67, 67, 67, 67,
+ 32, 11, 32, 34, 34, 34, 34, 11, 32, 32, 34, 16, 16, 16, 40, 11,
+ 32, 32,140, 67, 67,138, 34,149, 43, 32, 44, 44, 93, 2, 99, 2,
+ 16, 16, 16,150, 44, 44,150, 44, 36, 36, 36, 36, 44, 44, 44, 52,
+ 64, 44, 44, 44, 44, 44, 44, 57, 36, 36, 36, 61, 44, 44, 44, 44,
+ 36, 36, 36, 61, 36, 36, 36, 61, 2,121,121, 2,125,126,121, 2,
+ 2, 2, 2, 6, 2,108,121, 2,121, 4, 4, 4, 4, 2, 2, 88,
+ 2, 2, 2, 2, 2,120, 2, 2,108,151, 2, 2, 2, 2, 2, 2,
+ 67, 2,152,148,148,148,153, 44, 67, 67, 67, 67, 67, 55, 67, 67,
+ 67, 67, 44, 44, 44, 44, 44, 44, 67, 67, 67, 44, 44, 44, 44, 44,
+ 1, 2,154,155, 4, 4, 4, 4, 4, 67, 4, 4, 4, 4,156,157,
+ 158,105,105,105,105, 43, 43, 86,159, 40, 40, 67,105,160, 63, 67,
+ 36, 36, 36, 61, 57,161,162, 69, 36, 36, 36, 36, 36, 63, 40, 69,
+ 44, 44, 62, 36, 36, 36, 36, 36, 67, 27, 27, 67, 67, 67, 67, 67,
+ 67, 67, 67, 44, 44, 44, 44, 55, 67, 67, 67, 67, 67, 67, 67, 92,
+ 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27,
+ 163, 27, 27, 27, 27, 27, 27, 27, 36, 36, 83, 36, 36, 36, 36, 36,
+ 67, 67, 67, 92, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36,164, 2,
7, 7, 7, 7, 7, 36, 44, 44, 32, 32, 32, 32, 32, 32, 32, 70,
51,165, 43, 43, 43, 43, 43, 88, 32, 32, 32, 32, 32, 32, 40, 43,
36, 36, 36,105,105,105,105,105, 43, 2, 2, 2, 44, 44, 44, 44,
@@ -1330,7 +1312,7 @@ _hb_ucd_u8[17884] =
16, 32, 32, 32, 32, 32, 32, 32, 45, 16, 16, 16, 34, 34, 34, 32,
32, 32, 32, 32, 42,166, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32,
- 32, 32, 11, 11, 34,110, 44, 44, 32,150,150, 32, 32, 44, 44, 44,
+ 32, 32, 11, 11, 34, 34, 32, 44, 32,150,150, 32, 32, 32, 47, 44,
44, 40,167, 35, 40, 35, 36, 36, 36, 71, 36, 71, 36, 70, 36, 36,
36, 94, 87, 85, 67, 67, 80, 44, 27, 27, 27, 67,168, 44, 44, 44,
36, 36, 2, 2, 44, 44, 44, 44, 86, 36, 36, 36, 36, 36, 36, 36,
@@ -1391,8 +1373,10 @@ _hb_ucd_u8[17884] =
36, 61, 44, 44, 27, 27, 27, 27, 36, 44, 44, 44, 93, 2, 64, 44,
44, 44, 44, 44,179, 27, 27, 27, 11, 47, 44, 44, 44, 44, 44, 44,
16,110, 44, 44, 44, 27, 27, 27, 36, 36, 43, 43, 44, 44, 44, 44,
- 27, 27, 27, 27, 27, 27, 27,100, 36, 36, 36, 36, 36, 57,184, 44,
- 36, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 57, 43,
+ 7, 7, 7, 7, 7, 36, 36, 69, 11, 11, 11, 44, 57, 43, 43,159,
+ 16, 16, 16, 44, 44, 44, 44, 8, 27, 27, 27, 27, 27, 27, 27,100,
+ 36, 36, 36, 36, 36, 57,184, 44, 36, 44, 44, 44, 44, 44, 44, 44,
+ 44, 36, 61, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43,
27, 27, 27, 95, 44, 44, 44, 44,180, 27, 30, 2, 2, 44, 44, 44,
36, 43, 43, 2, 2, 44, 44, 44, 36, 36,183, 27, 27, 27, 44, 44,
87, 98, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43,
@@ -1410,14 +1394,18 @@ _hb_ucd_u8[17884] =
86, 87, 43, 43, 43, 80, 44, 44, 43, 86, 62, 36, 36, 36, 61, 62,
61, 36, 62, 36, 36, 57, 71, 86, 85, 86, 90, 89, 90, 89, 86, 44,
61, 44, 44, 89, 44, 44, 62, 36, 36, 86, 44, 43, 43, 43, 80, 44,
- 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 94, 86, 43, 43, 43, 43,
- 86, 43, 85, 71, 36, 63, 2, 2, 7, 7, 7, 7, 7, 2, 93, 71,
- 86, 87, 43, 43, 85, 85, 86, 87, 85, 43, 36, 72, 44, 44, 44, 44,
- 36, 36, 36, 36, 36, 36, 36, 94, 86, 43, 43, 44, 86, 86, 43, 87,
- 60, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 43, 44,
- 86, 87, 43, 43, 43, 85, 87, 87, 60, 2, 61, 44, 44, 44, 44, 44,
- 2, 2, 2, 2, 2, 2, 64, 44, 36, 36, 36, 36, 36, 70, 87, 86,
- 43, 43, 43, 87, 63, 44, 44, 44, 86, 43, 43, 87, 43, 43, 44, 44,
+ 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 62, 44, 61,
+ 36, 36, 36, 62, 86, 87, 43, 43, 80, 90, 89, 89, 86, 90, 86, 85,
+ 71, 71, 2, 93, 64, 44, 44, 44, 57, 80, 44, 44, 44, 44, 44, 44,
+ 36, 36, 94, 86, 43, 43, 43, 43, 86, 43, 85, 71, 36, 63, 2, 2,
+ 7, 7, 7, 7, 7, 2, 93, 71, 86, 87, 43, 43, 85, 85, 86, 87,
+ 85, 43, 36, 72, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 94,
+ 86, 43, 43, 44, 86, 86, 43, 87, 60, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 36, 36, 43, 44, 86, 87, 43, 43, 43, 85, 87, 87,
+ 60, 2, 61, 44, 44, 44, 44, 44, 2, 2, 2, 2, 2, 2, 64, 44,
+ 36, 36, 36, 36, 36, 70, 87, 86, 43, 43, 43, 87, 63, 44, 44, 44,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 44, 44, 44, 44, 44, 44,
+ 36, 36, 36, 36, 36, 61, 57, 87, 86, 43, 43, 87, 43, 43, 44, 44,
7, 7, 7, 7, 7, 27, 2, 97, 43, 43, 43, 43, 87, 60, 44, 44,
27,100, 44, 44, 44, 44, 44, 62, 36, 36, 36, 61, 62, 44, 36, 36,
36, 36, 62, 61, 36, 36, 36, 36, 86, 86, 86, 89, 90, 57, 85, 71,
@@ -1427,49 +1415,52 @@ _hb_ucd_u8[17884] =
2, 2, 2, 59, 44, 44, 44, 44, 70, 43, 43, 85, 87, 43, 36, 36,
36, 36, 36, 36, 36, 43, 43, 43, 43, 43, 43, 85, 43, 2, 72, 2,
2, 64, 44, 44, 44, 44, 44, 44, 2, 2, 2, 2, 2, 44, 44, 44,
- 43, 43, 43, 80, 43, 43, 43, 87, 63, 2, 2, 44, 44, 44, 44, 44,
- 2, 36, 36, 36, 36, 36, 36, 36, 44, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 89, 43, 43, 43, 85, 43, 87, 80, 44, 44, 44, 44,
- 36, 36, 36, 61, 36, 62, 36, 36, 70, 43, 43, 80, 44, 80, 43, 57,
- 43, 43, 43, 70, 44, 44, 44, 44, 36, 36, 36, 62, 61, 36, 36, 36,
- 36, 36, 36, 36, 36, 86, 86, 90, 43, 89, 87, 87, 61, 44, 44, 44,
- 36, 70, 85,107, 64, 44, 44, 44, 43, 94, 36, 36, 36, 36, 36, 36,
- 36, 36, 86, 43, 43, 80, 44, 86, 85, 60, 2, 2, 2, 2, 2, 2,
+ 63, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 80, 43, 43, 43, 87,
+ 63, 2, 2, 44, 44, 44, 44, 44, 2, 36, 36, 36, 36, 36, 36, 36,
+ 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 89, 43, 43, 43,
+ 85, 43, 87, 80, 44, 44, 44, 44, 36, 36, 36, 61, 36, 62, 36, 36,
+ 70, 43, 43, 80, 44, 80, 43, 57, 43, 43, 43, 70, 44, 44, 44, 44,
+ 36, 36, 36, 62, 61, 36, 36, 36, 36, 36, 36, 36, 36, 86, 86, 90,
+ 43, 89, 87, 87, 61, 44, 44, 44, 36, 70, 85,107, 64, 44, 44, 44,
+ 43, 94, 36, 36, 36, 36, 36, 36, 36, 36, 86, 43, 43, 80, 44, 86,
+ 85, 60, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 80, 44, 44,
27, 27, 91, 67, 67, 67, 56, 20,168, 67, 67, 67, 67, 67, 67, 67,
67, 44, 44, 44, 44, 44, 44, 93,105,105,105,105,105,105,105,181,
2, 2, 64, 44, 44, 44, 44, 44, 63, 64, 44, 44, 44, 44, 44, 44,
65, 65, 65, 65, 65, 65, 65, 65, 71, 36, 36, 70, 43, 43, 43, 43,
- 43, 43, 43, 44, 44, 44, 44, 44, 43, 43, 60, 44, 44, 44, 44, 44,
+ 43, 43, 43, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 43,
+ 43, 43, 43, 43, 43, 86, 87, 43, 43, 43, 60, 44, 44, 44, 44, 44,
43, 43, 43, 60, 2, 2, 67, 67, 40, 40, 97, 44, 44, 44, 44, 44,
7, 7, 7, 7, 7,179, 27, 27, 27, 62, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 44, 44, 62, 36, 27, 27, 27, 30, 2, 64, 44, 44,
+ 36, 36, 36, 36, 44, 44, 62, 36, 40, 69, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 83,164, 2, 27, 27, 27, 30, 2, 64, 44, 44,
36, 36, 36, 36, 36, 61, 44, 57, 94, 86, 86, 86, 86, 86, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 44, 44, 44, 57,
43, 74, 40, 40, 40, 40, 40, 40, 40, 88, 80, 44, 44, 44, 44, 44,
- 86, 44, 44, 44, 44, 44, 44, 44, 40, 40, 52, 40, 40, 40, 52, 81,
- 36, 61, 44, 44, 44, 44, 44, 44, 44, 61, 44, 44, 44, 44, 44, 44,
- 36, 61, 62, 44, 44, 44, 44, 44, 44, 44, 36, 36, 44, 44, 44, 44,
- 36, 36, 36, 36, 36, 44, 50, 60, 65, 65, 44, 44, 44, 44, 44, 44,
- 43, 43, 43, 43, 43, 43, 43, 44, 43, 43, 43, 80, 44, 44, 44, 44,
- 67, 67, 67, 92, 55, 67, 67, 67, 67, 67,186, 87, 43, 67,186, 86,
- 86,187, 65, 65, 65, 84, 43, 43, 43, 76, 50, 43, 43, 43, 67, 67,
- 67, 67, 67, 67, 67, 43, 43, 67, 67, 43, 76, 44, 44, 44, 44, 44,
- 27, 27, 44, 44, 44, 44, 44, 44, 11, 11, 11, 11, 11, 16, 16, 16,
- 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16,
- 16, 16,110, 16, 16, 16, 16, 16, 11, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 47, 11, 44, 47, 48, 47, 48, 11, 47, 11,
- 11, 11, 11, 16, 16,150,150, 16, 16, 16,150, 16, 16, 16, 16, 16,
- 16, 16, 11, 48, 11, 47, 48, 11, 11, 11, 47, 11, 11, 11, 47, 16,
- 16, 16, 16, 16, 11, 48, 11, 47, 11, 11, 47, 47, 44, 11, 11, 11,
- 47, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11,
- 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 44, 11, 11, 11, 11,
- 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16,
- 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16,
- 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16,
- 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 44, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 43, 43, 43, 76, 67, 50, 43, 43,
+ 86, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 62,
+ 40, 40, 52, 40, 40, 40, 52, 81, 36, 61, 44, 44, 44, 44, 44, 44,
+ 44, 61, 44, 44, 44, 44, 44, 44, 36, 61, 62, 44, 44, 44, 44, 44,
+ 44, 44, 36, 36, 44, 44, 44, 44, 36, 36, 36, 36, 36, 44, 50, 60,
+ 65, 65, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44,
+ 43, 43, 43, 80, 44, 44, 44, 44, 67, 67, 67, 92, 55, 67, 67, 67,
+ 67, 67,186, 87, 43, 67,186, 86, 86,187, 65, 65, 65, 84, 43, 43,
+ 43, 76, 50, 43, 43, 43, 67, 67, 67, 67, 67, 67, 67, 43, 43, 67,
+ 67, 43, 76, 44, 44, 44, 44, 44, 27, 27, 44, 44, 44, 44, 44, 44,
+ 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 16, 16, 16,110, 16, 16, 16, 16, 16,
+ 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 47, 11,
+ 44, 47, 48, 47, 48, 11, 47, 11, 11, 11, 11, 16, 16,150,150, 16,
+ 16, 16,150, 16, 16, 16, 16, 16, 16, 16, 11, 48, 11, 47, 48, 11,
+ 11, 11, 47, 11, 11, 11, 47, 16, 16, 16, 16, 16, 11, 48, 11, 47,
+ 11, 11, 47, 47, 44, 11, 11, 11, 47, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16,
+ 16, 16, 16, 44, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11,
+ 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33,
+ 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31,
+ 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16,
+ 16, 33, 16, 16, 16, 32, 44, 7, 43, 43, 43, 76, 67, 50, 43, 43,
43, 43, 43, 43, 43, 43, 76, 67, 67, 67, 50, 67, 67, 67, 67, 67,
67, 67, 76, 21, 2, 2, 44, 44, 44, 44, 44, 44, 44, 57, 43, 43,
16, 16, 16, 16, 16, 39, 16, 16, 16, 16, 16, 16, 16, 16, 16,110,
@@ -1479,22 +1470,23 @@ _hb_ucd_u8[17884] =
43, 43, 43, 74, 40, 40, 40, 44, 7, 7, 7, 7, 7, 44, 44, 77,
36, 36, 36, 36, 36, 36, 36, 80, 36, 36, 36, 36, 36, 36, 43, 43,
7, 7, 7, 7, 7, 44, 44, 96, 36, 36, 36, 36, 36, 83, 43, 43,
- 36, 36, 36, 61, 36, 36, 62, 61, 36, 36, 61,179, 27, 27, 27, 27,
- 16, 16, 43, 43, 43, 74, 44, 44, 27, 27, 27, 27, 27, 27,163, 27,
- 188, 27,100, 44, 44, 44, 44, 44, 27, 27, 27, 27, 27, 27, 27,163,
- 27, 27, 27, 27, 27, 27, 27, 44, 36, 36, 62, 36, 36, 36, 36, 36,
- 62, 61, 61, 62, 62, 36, 36, 36, 36, 61, 36, 36, 62, 62, 44, 44,
- 44, 61, 44, 62, 62, 62, 62, 36, 62, 61, 61, 62, 62, 62, 62, 62,
- 62, 61, 61, 62, 36, 61, 36, 36, 36, 61, 36, 36, 62, 36, 61, 61,
- 36, 36, 36, 36, 36, 62, 36, 36, 62, 36, 62, 36, 36, 62, 36, 36,
- 8, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 44, 44,
- 55, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27, 27, 27, 91, 67,
- 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 67, 67, 67, 67, 67,
- 67, 92, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 92, 44, 44, 44,
- 67, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 25, 41, 41,
- 67, 67, 67, 67, 44, 44, 67, 67, 67, 67, 67, 92, 44, 55, 67, 67,
- 67, 67, 67, 67, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 67, 55,
- 67, 67, 67, 44, 44, 44, 44, 67, 67, 92, 67, 67, 67, 67, 67, 67,
+ 188, 7, 7, 7, 7,189, 44, 93, 36, 36, 36, 61, 36, 36, 62, 61,
+ 36, 36, 61,179, 27, 27, 27, 27, 16, 16, 43, 43, 43, 74, 44, 44,
+ 27, 27, 27, 27, 27, 27,163, 27,190, 27,100, 44, 44, 44, 44, 44,
+ 27, 27, 27, 27, 27, 27, 27,163, 27, 27, 27, 27, 27, 27, 27, 44,
+ 36, 36, 62, 36, 36, 36, 36, 36, 62, 61, 61, 62, 62, 36, 36, 36,
+ 36, 61, 36, 36, 62, 62, 44, 44, 44, 61, 44, 62, 62, 62, 62, 36,
+ 62, 61, 61, 62, 62, 62, 62, 62, 62, 61, 61, 62, 36, 61, 36, 36,
+ 36, 61, 36, 36, 62, 36, 61, 61, 36, 36, 36, 36, 36, 62, 36, 36,
+ 62, 36, 62, 36, 36, 62, 36, 36, 8, 44, 44, 44, 44, 44, 44, 44,
+ 67, 67, 67, 67, 67, 67, 44, 44, 55, 67, 67, 67, 67, 67, 67, 67,
+ 27, 27, 27, 27, 27, 27, 91, 67, 67, 67, 67, 67, 67, 67, 67, 44,
+ 44, 44, 44, 67, 67, 67, 67, 67, 67, 92, 44, 44, 44, 44, 44, 44,
+ 67, 67, 67, 67, 92, 44, 44, 44, 67, 44, 44, 44, 44, 44, 44, 44,
+ 67, 67, 67, 67, 67, 25, 41, 41, 67, 67, 67, 67, 44, 44, 67, 67,
+ 67, 67, 67, 92, 44, 55, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44,
+ 67, 67, 67, 67, 67, 44, 44, 55, 67, 67, 67, 92, 44, 44, 44, 67,
+ 67, 67, 67, 67, 67, 67, 92, 55, 67, 92, 67, 67, 67, 67, 67, 67,
79, 44, 44, 44, 44, 44, 44, 44,171,171,171,171,171,171,171, 44,
171,171,171,171,171,171,171, 0, 0, 0, 29, 21, 21, 21, 23, 21,
22, 18, 21, 25, 21, 17, 13, 13, 25, 25, 25, 21, 21, 9, 9, 9,
@@ -1520,366 +1512,350 @@ _hb_ucd_u8[17884] =
6, 21, 11, 21, 24, 9, 6, 9, 23, 26, 6, 10, 4, 4, 3, 3,
7, 25, 17, 16, 16, 22, 16, 16, 25, 17, 25, 2, 25, 24, 2, 15,
12, 15, 14, 2, 21, 14, 7, 15, 12, 17, 21, 1, 26, 10, 10, 1,
- 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12,
- 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0,
+ 7, 13, 13, 2, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 0, 10, 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 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, 0, 0, 0, 17, 18, 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, 17, 18, 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, 20,
- 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 36, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 37, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0,
- 0, 0, 40, 41, 42, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 5,
- 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, 16, 18,
- 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, 21, 19, 0, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 35,
- 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 0,
- 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0,
- 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 62, 63,
- 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0,
- 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,
- 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0,
- 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 75, 76, 0, 77, 78, 0,
- 0, 79, 80, 0, 81, 62, 0, 82, 83, 0, 0, 84, 85, 86, 0, 0,
- 0, 87, 0, 88, 0, 0, 51, 89, 51, 0, 90, 0, 91, 0, 0, 0,
- 80, 0, 0, 0, 92, 93, 0, 94, 95, 96, 97, 0, 0, 0, 0, 0,
- 51, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 0,100, 0, 0,
- 0, 0, 0,101,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103,
- 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,106, 0,
- 0,107, 0, 0, 0, 0, 0, 0,108, 0,109, 0,102, 0, 0, 0,
- 0, 0,110,111, 0, 0, 0, 0, 0, 0, 0,112, 0, 0, 0, 0,
- 0, 0, 0,113, 0,114, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
- 5, 6, 7, 0, 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0,
- 0, 13, 0, 0, 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20,
- 21, 0, 0, 0, 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0,
- 0, 27, 0, 0, 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0,
- 33, 0, 0, 35, 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37,
- 38, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41,
- 42, 0, 0, 0, 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0,
- 47, 0, 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0,
- 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55,
- 0, 56, 0, 0, 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0,
- 0, 0, 0, 61, 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66,
- 0, 0, 0, 67, 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76,
- 0, 0, 77, 78, 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0,
- 0, 81, 0, 0, 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78,
- 84, 0, 85, 0, 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0,
- 0, 0, 0, 88, 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84,
- 0, 0, 33, 0, 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49,
- 0, 0, 93, 0, 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0,
- 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0,100,101, 93, 0, 0,
- 102, 0, 0, 0, 84, 0, 0,103, 0, 0, 0,104,105, 0, 0,106,
- 107, 0, 0, 0, 0, 0, 0,108, 0, 0,109, 0, 0, 0, 0,110,
- 33, 0,111,112,113, 35, 0, 0,114, 0, 0, 0,115, 0, 0, 0,
- 0, 0, 0,116, 0, 0,117, 0, 0, 0, 0,118, 88, 0, 0, 0,
- 0, 0, 57, 0, 0, 0, 0, 52,119, 0, 0, 0, 0,120, 0, 0,
- 121, 0, 0, 0, 0,119, 0, 0,122, 0, 0, 0, 0, 0, 0,123,
- 0, 0, 0,124, 0, 0, 0,125, 0,126, 0, 0, 0, 0,127,128,
- 129, 0,130, 0,131, 0, 0, 0,132,133,134, 0, 77, 0, 0, 0,
- 0, 0, 35, 0, 0, 0,135, 0, 0, 0,136, 0, 0,137, 0, 0,
- 138, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4,
- 5, 6, 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17,
- 18, 1, 1, 1, 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24,
- 25, 26, 27, 28, 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33,
- 34, 35, 1, 36, 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41,
- 42, 0, 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1,
- 21, 0, 0, 47, 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0,
- 0, 0, 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52,
- 54, 21, 35, 1, 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0,
- 0, 0, 0, 59, 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0,
- 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0,
- 0, 0, 68, 0, 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0,
- 0, 77, 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49,
- 0, 80, 0, 0, 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0,
- 0, 0, 83, 0, 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85,
- 1, 52, 15, 86, 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10,
- 1, 0, 0, 0, 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0,
- 0, 78, 0, 0, 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0,
- 21, 1, 21, 92, 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58,
- 81, 99,100, 4, 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0,
- 0, 0, 0, 61, 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50,
- 0, 0, 0, 38, 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68,
- 61, 0, 0, 0, 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0,
- 0, 0, 0,107, 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0,
- 0, 0, 0,108, 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40,
+ 0, 0, 0, 0, 0, 0, 41, 42, 43, 0, 44, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 5, 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15,
+ 16, 17, 16, 18, 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19,
+ 21, 19, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
+ 34, 0, 0, 35, 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49,
+ 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0,
+ 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59,
+ 60, 61, 62, 63, 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0,
+ 67, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 69, 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73,
+ 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, 0, 0, 76, 77,
+ 0, 78, 79, 0, 0, 80, 81, 0, 82, 62, 0, 83, 84, 0, 0, 85,
+ 86, 87, 0, 88, 0, 89, 0, 90, 0, 0, 51, 91, 51, 0, 92, 0,
+ 93, 0, 0, 0, 81, 0, 0, 0, 94, 95, 0, 96, 97, 98, 99, 0,
+ 0, 0, 0, 0, 51, 0, 0, 0, 0,100,101, 0, 0, 0, 0, 0,
+ 0,102, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 0,104,
+ 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0,107, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,108,109, 0, 0,110, 0, 0,
+ 0, 0, 0, 0,111, 0,112, 0,105, 0, 0, 0, 0, 0,113,114,
+ 0, 0, 0, 0, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117,
+ 0,118, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0,
+ 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, 0, 0,
+ 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0,
+ 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, 0, 0,
+ 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, 0, 35,
+ 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0,
+ 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0,
+ 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, 0, 0,
+ 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 52,
+ 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0,
+ 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 61,
+ 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, 0, 0, 0, 67,
+ 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, 0, 0, 77, 78,
+ 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, 0, 81, 0, 0,
+ 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, 84, 0, 85, 0,
+ 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, 0, 0, 0, 88,
+ 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, 0, 0, 33, 0,
+ 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, 0, 0, 93, 0,
+ 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0,
+ 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 0,101,102, 93, 0, 0,
+ 103, 0, 0, 0, 84, 0, 0,104, 0, 0, 0,105,106, 0, 0,107,
+ 108, 0, 0, 0, 0, 0, 0,109, 0, 0,110, 0, 0, 0, 0,111,
+ 33, 0,112,113,114, 57, 0, 0,115, 35, 0, 0,116, 0, 0, 0,
+ 117, 0, 0, 0, 0, 0, 0,118, 0, 0,119, 0, 0, 0, 0,120,
+ 88, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 52,121, 0, 0, 0,
+ 0,122, 0, 0,123, 0, 0, 0, 0,121, 0, 0,124, 0, 0, 0,
+ 0, 0, 79, 0, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,127,
+ 0,128, 0, 0, 0, 0,129,130,131, 0,132, 0,133, 0, 0, 0,
+ 134,135,136, 0, 77, 0, 0, 0, 0, 0, 35, 0, 0, 0,137, 0,
+ 0, 0,138, 0, 0, 0,139, 0, 0,140, 0, 0,141, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 4,
+ 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1, 1, 1,
+ 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26, 27, 28,
+ 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, 1, 36,
+ 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0, 0, 0,
+ 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0, 0, 47,
+ 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 19, 52, 1,
+ 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21, 35, 1,
+ 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, 0, 59,
+ 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, 64, 0,
+ 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0,
+ 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77, 0, 0,
+ 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80, 0, 0,
+ 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, 83, 0,
+ 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52, 15, 86,
+ 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, 1, 0, 0, 0,
+ 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, 0, 78, 0, 0,
+ 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, 21, 1, 21, 92,
+ 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, 81, 99,100, 4,
+ 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, 0, 0, 0, 61,
+ 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50, 0, 0, 0, 38,
+ 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68, 61, 0, 0, 0,
+ 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0, 0, 0, 0,107,
+ 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, 0, 0, 0,108,
+ 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0, 0, 0, 49, 50,
0, 0, 19, 58, 0, 0, 0, 51, 0,111, 14, 52,112, 41, 0, 0,
62, 0, 0, 61, 0, 0,113, 0, 87, 0, 0, 0, 61, 62, 0, 0,
62, 0, 89, 0, 0,113, 0, 0, 0, 0,114, 0, 0, 0, 78, 55,
- 0, 38, 1, 58, 1, 58, 0, 0, 63, 89, 0, 0,115, 0, 0, 0,
- 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0, 0, 0, 0, 79,
- 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, 0, 0,
- 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0, 0, 0, 0,117,
- 0,118,119,120,121, 0,104, 4,122, 49, 23, 0, 0, 0, 38, 50,
- 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, 48,105, 87, 0,
- 0, 0, 0, 1, 0, 0, 0,123, 4,122, 0, 0, 0, 1,124, 0,
- 0, 0, 0, 0,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,
- 1, 1, 1, 1, 1,220,220,220,220,230,230,230,230,240,230,220,
- 220,220,230,230,230,220,220, 0,230,230,230,220,220,220,220,230,
- 232,220,220,230,233,234,234,233,234,234,233,230, 0, 0, 0,230,
- 0,220,230,230,230,230,220,230,230,230,222,220,230,230,220,220,
- 230,222,228,230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20,
- 21, 22, 0, 23, 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, 0,
- 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,230,230,220,220,230,
- 220,230,230,220, 35, 0, 0, 0, 0, 0,230,230,230, 0, 0,230,
- 230, 0,220,230,230,220, 0, 0, 0, 36, 0, 0,230,220,230,230,
- 220,220,230,220,220,230,220,230,220,230,230, 0, 0,220, 0, 0,
- 230,230, 0,230, 0,230,230,230,230,230, 0, 0, 0,220,220,220,
- 230,220,220,220,230,230, 0,220, 27, 28, 29,230, 7, 0, 0, 0,
- 0, 9, 0, 0, 0,230,220,230,230, 0, 0, 0, 0, 0,230, 0,
- 0, 84, 91, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 9, 0,
- 103,103, 9, 0,107,107,107,107,118,118, 9, 0,122,122,122,122,
- 220,220, 0, 0, 0,220, 0,220, 0,216, 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,220, 0, 0, 0, 0, 7, 0, 9, 9, 0,
- 9, 9, 0, 0, 0,230, 0, 0, 0,228, 0, 0, 0,222,230,220,
- 220, 0, 0, 0,230, 0, 0,220,230,220, 0,220,230,230,230, 0,
- 0, 0, 9, 9, 0, 0, 7, 0,230, 0, 1, 1, 1, 0, 0, 0,
- 230,234,214,220,202,230,230,230,230,230,232,228,228,220,218,230,
- 233,220,230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230,
- 220,230, 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0,
- 0, 0, 0,220,230, 0,230,230,220, 0, 0,230, 0, 0, 26, 0,
- 0,220, 0,230,230, 1,220, 0, 0,230,220, 0, 0, 0,220,220,
- 0, 0,230,220, 0, 9, 7, 0, 0, 7, 9, 0, 0, 0, 9, 7,
- 6, 6, 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, 1, 0, 0,
- 0,226,216,216,216,216,216, 0,220,220,220, 0,232,232,220,230,
- 230,230, 7, 0, 16, 17, 17, 17, 17, 17, 17, 33, 17, 17, 17, 19,
- 17, 17, 17, 17, 20,101, 17,113,129,169, 17, 27, 28, 17, 17, 17,
+ 0, 38, 1, 58, 1, 58, 0, 0, 0, 0, 0, 88, 63, 89, 0, 0,
+ 115, 0, 0, 0, 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0,
+ 0, 0, 0, 79, 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0,
+ 79, 0, 0, 0, 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0,
+ 0, 0, 0,117, 0,118,119,120,121, 0,104, 4,122, 49, 23, 0,
+ 0, 0, 38, 50, 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1,
+ 48,105, 87, 0, 0, 0, 0, 1, 0, 0, 0,123, 0, 0, 0,112,
+ 4,122, 0, 0, 0, 1,124, 0, 0, 0, 0, 0,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, 1, 1, 1, 1, 1,220,220,220,
+ 220,230,230,230,230,240,230,220,220,220,230,230,230,220,220, 0,
+ 230,230,230,220,220,220,220,230,232,220,220,230,233,234,234,233,
+ 234,234,233,230, 0, 0, 0,230, 0,220,230,230,230,230,220,230,
+ 230,230,222,220,230,230,220,220,230,222,228,230, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, 25, 0,
+ 230,220, 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, 30, 31,
+ 32, 33, 34,230,230,220,220,230,220,230,230,220, 35, 0, 0, 0,
+ 0, 0,230,230,230, 0, 0,230,230, 0,220,230,230,220, 0, 0,
+ 0, 36, 0, 0,230,220,230,230,220,220,230,220,220,230,220,230,
+ 220,230,230, 0, 0,220, 0, 0,230,230, 0,230, 0,230,230,230,
+ 230,230, 0, 0, 0,220,220,220,230,220,220,220,230,230, 0,220,
+ 27, 28, 29,230, 7, 0, 0, 0, 0, 9, 0, 0, 0,230,220,230,
+ 230, 0, 0, 0, 0, 0,230, 0, 0, 84, 91, 0, 0, 0, 0, 9,
+ 9, 0, 0, 0, 0, 0, 9, 0,103,103, 9, 0,107,107,107,107,
+ 118,118, 9, 0,122,122,122,122,220,220, 0, 0, 0,220, 0,220,
+ 0,216, 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,220, 0,
+ 0, 0, 0, 7, 0, 9, 9, 0, 9, 9, 0, 0, 0,230, 0, 0,
+ 0,228, 0, 0, 0,222,230,220,220, 0, 0, 0,230, 0, 0,220,
+ 230,220, 0,220,230,230,230, 0, 0, 0, 9, 9, 0, 0, 7, 0,
+ 230, 0, 1, 1, 1, 0, 0, 0,230,234,214,220,202,230,230,230,
+ 230,230,232,228,228,220,218,230,233,220,230,220,230,230, 1, 1,
+ 1, 1, 1,230, 0, 1, 1,230,220,230, 1, 1, 0, 0,218,228,
+ 232,222,224,224, 0, 8, 8, 0, 0, 0, 0,220,230, 0,230,230,
+ 220, 0, 0,230, 0, 0, 26, 0, 0,220, 0,230,230, 1,220, 0,
+ 0,230,220, 0, 0, 0,220,220, 0, 0,230,220, 0, 9, 7, 0,
+ 0, 7, 9, 0, 0, 0, 9, 7, 6, 6, 0, 0, 0, 0, 1, 0,
+ 0,216,216, 1, 1, 1, 0, 0, 0,226,216,216,216,216,216, 0,
+ 220,220,220, 0,232,232,220,230,230,230, 7, 0, 16, 17, 17, 17,
+ 17, 17, 17, 33, 17, 17, 17, 19, 17, 17, 17, 17, 20,101, 17,113,
+ 129,169, 17, 27, 28, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17,237, 0, 1, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 0, 6, 7, 8, 9, 0, 0, 0, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
- 0, 0, 21, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 27, 0, 28,
- 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, 0,
- 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39,
- 0, 0, 0, 0, 1, 2, 40, 41, 0, 1, 2, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0,
- 0, 0, 3, 4, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0,
- 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0,
- 0, 0, 10, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 11, 12,
- 0, 13, 0, 14, 15, 16, 0, 0, 0, 0, 0, 1, 17, 18, 0, 19,
- 7, 1, 0, 0, 0, 20, 20, 7, 20, 20, 20, 20, 20, 20, 20, 8,
- 21, 0, 22, 0, 7, 23, 24, 0, 20, 20, 25, 0, 0, 0, 26, 27,
- 1, 7, 20, 20, 20, 20, 20, 1, 28, 29, 30, 31, 0, 0, 20, 0,
- 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 20, 20,
- 20, 1, 0, 0, 8, 21, 32, 4, 0, 10, 0, 33, 7, 20, 20, 20,
- 0, 0, 0, 0, 8, 34, 34, 35, 36, 34, 37, 0, 38, 1, 20, 20,
- 0, 0, 39, 0, 1, 1, 0, 8, 21, 1, 20, 0, 0, 0, 1, 0,
- 0, 40, 1, 1, 0, 0, 8, 21, 0, 1, 0, 1, 0, 1, 0, 0,
- 0, 0, 26, 34, 34, 34, 34, 34, 34, 34, 34, 34, 21, 7, 20, 41,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 21, 0, 42, 43, 44, 0, 45,
- 0, 8, 21, 0, 0, 0, 0, 0, 0, 0, 0, 46, 7, 1, 10, 1,
- 0, 0, 0, 1, 20, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 26, 34, 9, 0, 0, 20, 20, 1, 20, 20, 0, 0, 0, 0, 0,
- 0, 0, 26, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3,
- 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 9, 10, 11, 11, 11, 11, 12, 13, 13, 13, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 13, 22, 13, 13, 13, 13, 23, 24, 24, 25, 26, 13, 13,
- 13, 27, 28, 29, 13, 30, 31, 32, 33, 34, 35, 36, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 37, 7, 38, 39, 7, 40, 7, 7, 7, 41, 13, 42, 7, 7, 43, 7,
- 44, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,237, 0, 1, 2, 2,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 6, 7, 8,
+ 9, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 22, 0, 0, 0, 0,
+ 23, 24, 25, 26, 0, 27, 0, 28, 29, 30, 31, 32, 0, 0, 0, 0,
+ 0, 0, 0, 33, 34, 35, 36, 0, 0, 0, 0, 0, 37, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, 1, 2, 40, 41,
+ 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 5, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0,
+ 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 10, 0, 0, 10, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10,
+ 0, 0, 0, 0, 0, 0, 11, 12, 0, 13, 0, 14, 15, 16, 0, 0,
+ 0, 0, 0, 1, 17, 18, 0, 19, 7, 1, 0, 0, 0, 20, 20, 7,
+ 20, 20, 20, 20, 20, 20, 20, 8, 21, 0, 22, 0, 7, 23, 24, 0,
+ 20, 20, 25, 0, 0, 0, 26, 27, 1, 7, 20, 20, 20, 20, 20, 1,
+ 28, 29, 30, 31, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 10, 0,
+ 0, 0, 0, 0, 0, 0, 20, 20, 20, 1, 0, 0, 8, 21, 32, 4,
+ 0, 10, 0, 33, 7, 20, 20, 20, 0, 0, 0, 0, 8, 34, 34, 35,
+ 36, 34, 37, 0, 38, 1, 20, 20, 0, 0, 39, 0, 1, 1, 0, 8,
+ 21, 1, 20, 0, 0, 0, 1, 0, 0, 40, 1, 1, 0, 0, 8, 21,
+ 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 26, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 21, 7, 20, 41, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 21, 0, 42, 43, 44, 0, 45, 0, 8, 21, 0, 0, 0, 0, 0,
+ 0, 0, 0, 46, 7, 1, 10, 1, 0, 0, 0, 1, 20, 20, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 34, 9, 0, 0, 20, 20,
+ 1, 20, 20, 0, 0, 0, 0, 0, 0, 0, 26, 21, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 47, 48, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 13, 13, 13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18,
+ 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 20, 20, 20, 20, 20,
+ 20, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 20, 33,
+ 34, 35, 34, 34, 36, 37, 20, 20, 20, 20, 20, 20, 38, 20, 39, 40,
+ 41, 41, 41, 41, 41, 42, 43, 44, 20, 20, 20, 20, 20, 20, 20, 45,
+ 46, 20, 20, 47, 20, 20, 20, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 20, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 45, 0, 0, 1,
- 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 32, 33, 34, 35, 36, 37, 37, 37, 37, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 2, 2, 53, 54, 55, 56,
- 57, 58, 59, 59, 59, 59, 60, 59, 59, 59, 59, 59, 59, 59, 61, 61,
- 59, 59, 59, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 59, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 79, 70, 70, 70, 70, 80, 80,
- 80, 80, 80, 80, 80, 80, 80, 81, 82, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 95, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 70, 70, 97, 98, 99,100,101,101,102,103,104,105,106,107,108,109,
- 110,111, 96,112,113,114,115,116,117,118,119,119,120,121,122,123,
- 124,125,126,127,128,129,130,131,132, 96,133,134,135,136,137,138,
- 139,140,141,142,143, 96,144,145, 96,146,147,148,149, 96,150,151,
- 152,153,154,155,156, 96,157,158,159,160, 96,161,162,163,164,164,
- 164,164,164,164,164,165,166,164,167, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,168,169,169,
- 169,169,169,169,169,169,170, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96,171,171,171,171,172, 96, 96, 96,173,173,
- 173,173,174,175,176,177, 96, 96, 96, 96,178,179,180,181,182,182,
- 182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,
- 182,182,182,182,182,182,182,182,182,182,182,182,182,183,182,182,
- 182,182,182,182,184,184,184,185,186, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,187,188,189,
- 190,191,191,192, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96,193,194, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,195,196, 59,197,
- 198,199,200,201,202, 96,203,204,205, 59, 59,206, 59,207,208,208,
- 208,208,208,209, 96, 96, 96, 96, 96, 96, 96, 96,210, 96,211,212,
- 213, 96, 96,214, 96, 96, 96,215, 96, 96, 96, 96, 96,216,217,218,
- 219, 96, 96, 96, 96, 96,220,221,222, 96,223,224, 96, 96,225,226,
- 59,227,228, 96, 59, 59, 59, 59, 59, 59, 59,229,230,231,232,233,
- 59, 59,234,235, 59,236, 96, 96, 96, 96, 96, 96, 96, 96, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,237, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,238, 70,239, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,240, 70, 70, 70, 70,
- 70, 70, 70, 70, 70,241, 70, 70, 70, 70,242, 96, 96, 96, 70, 70,
- 70, 70,243, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 70, 70,
- 70, 70, 70, 70,244, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 70, 70,245, 96, 96, 96, 96, 96, 96, 96, 96,246, 96,
- 247,248, 0, 1, 2, 2, 0, 1, 2, 2, 2, 3, 4, 5, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 0, 19, 0,
- 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0,
- 26, 26, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9,
- 9, 9, 0, 9, 9, 9, 2, 2, 9, 9, 9, 9, 0, 9, 2, 2,
- 2, 2, 9, 0, 9, 0, 9, 9, 9, 2, 9, 2, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9,
- 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 6, 2, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 14,
- 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 2,
- 2, 2, 2, 2, 2, 2, 14, 14, 14, 2, 2, 2, 2, 14, 14, 14,
- 14, 14, 14, 2, 2, 2, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3,
- 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 3,
- 3, 3, 3, 3, 3, 3, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
- 37, 37, 37, 37, 2, 37, 37, 37, 37, 2, 2, 37, 37, 37, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38, 2, 2, 2, 2, 2, 2, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 2, 2, 64, 64, 64, 90, 90,
- 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 2, 2, 90, 90,
- 90, 90, 90, 90, 90, 2, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
- 95, 95, 2, 2, 95, 2, 37, 37, 37, 2, 2, 2, 2, 2, 3, 3,
- 3, 3, 3, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3,
- 0, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1,
- 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 5, 5,
- 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 5, 5, 2,
- 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2,
- 5, 5, 5, 5, 5, 5, 5, 2, 5, 2, 2, 2, 5, 5, 5, 5,
- 2, 2, 5, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, 2, 2, 2,
- 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 5, 5, 2, 5, 5, 5,
- 5, 5, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 11,
- 11, 11, 2, 11, 11, 11, 11, 11, 11, 2, 2, 2, 2, 11, 11, 2,
- 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2,
- 11, 11, 11, 11, 11, 11, 11, 2, 11, 11, 2, 11, 11, 2, 11, 11,
- 2, 2, 11, 2, 11, 11, 11, 2, 2, 11, 11, 11, 2, 2, 2, 11,
- 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, 11, 2, 11, 2, 2, 2,
- 2, 2, 2, 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 2, 10,
- 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10,
- 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2,
- 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 2, 10, 10, 10, 10, 10,
- 2, 2, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, 2, 2, 10, 2,
- 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 2, 2, 10, 10, 10, 10,
- 2, 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 10, 10, 10, 2, 21,
- 21, 21, 2, 21, 21, 21, 21, 21, 21, 21, 21, 2, 2, 21, 21, 2,
- 2, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 2,
- 21, 21, 21, 21, 21, 21, 21, 2, 21, 21, 2, 21, 21, 21, 21, 21,
- 2, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 21, 2, 2, 2, 2,
- 2, 2, 2, 21, 21, 21, 2, 2, 2, 2, 21, 21, 2, 21, 21, 21,
- 21, 21, 2, 2, 21, 21, 2, 2, 22, 22, 2, 22, 22, 22, 22, 22,
- 22, 2, 2, 2, 22, 22, 22, 2, 22, 22, 22, 22, 2, 2, 2, 22,
- 22, 2, 22, 2, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 2, 2, 2, 2, 22, 22, 22, 2,
- 2, 2, 2, 2, 2, 22, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22,
- 22, 2, 2, 2, 2, 2, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
- 23, 23, 23, 2, 23, 23, 23, 2, 23, 23, 23, 23, 23, 23, 23, 23,
- 2, 2, 23, 23, 23, 23, 23, 2, 23, 23, 23, 23, 2, 2, 2, 2,
- 2, 2, 2, 23, 23, 2, 23, 23, 23, 2, 2, 23, 2, 2, 23, 23,
- 23, 23, 2, 2, 23, 23, 2, 2, 2, 2, 2, 2, 2, 23, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 2,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 16,
- 2, 2, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 2, 2, 2, 2,
- 2, 2, 2, 16, 16, 2, 16, 16, 16, 16, 2, 2, 16, 16, 2, 16,
- 16, 16, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 2, 20, 20, 20, 2, 20, 20, 20, 20, 20, 20, 2, 2,
- 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 2, 2, 20, 20, 2, 36,
- 36, 36, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 2, 2, 2, 36, 36, 36, 36, 36, 36, 36, 36,
- 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2, 2,
- 36, 2, 2, 2, 2, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2,
- 2, 2, 2, 2, 36, 36, 2, 2, 36, 36, 36, 2, 2, 2, 2, 24,
- 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
- 24, 2, 2, 2, 2, 0, 24, 24, 24, 24, 2, 2, 2, 2, 2, 18,
- 18, 2, 18, 2, 18, 18, 18, 18, 18, 2, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18, 18,
- 18, 18, 18, 18, 2, 2, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18,
- 18, 18, 18, 18, 18, 2, 18, 18, 2, 2, 18, 18, 18, 18, 25, 25,
- 25, 25, 25, 25, 25, 25, 2, 25, 25, 25, 25, 25, 25, 25, 25, 25,
- 25, 25, 25, 2, 2, 2, 25, 25, 25, 25, 25, 2, 25, 25, 25, 25,
- 25, 25, 25, 0, 0, 0, 0, 25, 25, 2, 2, 2, 2, 2, 33, 33,
- 33, 33, 33, 33, 33, 33, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 2, 8, 2, 2, 2, 2, 2, 8, 2, 2, 8, 8,
- 8, 0, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 2, 30, 30, 30, 30, 2, 2, 30, 30,
- 30, 30, 30, 30, 30, 2, 30, 30, 30, 2, 2, 30, 30, 30, 30, 30,
- 30, 30, 30, 2, 2, 2, 30, 30, 2, 2, 2, 2, 2, 2, 29, 29,
- 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 2, 2, 28, 28,
- 28, 28, 28, 28, 28, 28, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 2, 2, 2, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 0, 0, 0, 35, 35, 35, 2, 2, 2, 2, 2, 2, 2, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
- 44, 44, 44, 0, 0, 2, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 2, 2, 2, 2, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 2, 46, 46, 46, 2, 46, 46, 2, 2, 2, 2, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 2, 2, 31, 31,
- 2, 2, 2, 2, 2, 2, 32, 32, 0, 0, 32, 0, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 2, 2, 2, 2, 2, 2, 32, 2,
- 2, 2, 2, 2, 2, 2, 32, 32, 32, 2, 2, 2, 2, 2, 28, 28,
- 28, 28, 28, 28, 2, 2, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
- 48, 48, 48, 48, 48, 2, 48, 48, 48, 48, 2, 2, 2, 2, 48, 2,
- 2, 2, 48, 48, 48, 48, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 2, 2, 52, 52, 52, 52, 52, 2, 2, 2, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2, 2, 2, 2, 58, 58,
- 2, 2, 2, 2, 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 2, 2, 54, 54, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 2, 91, 91,
- 91, 91, 91, 2, 2, 91, 91, 91, 2, 2, 2, 2, 2, 2, 91, 91,
- 91, 91, 91, 91, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 62, 62,
- 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 2, 2, 2, 62, 62,
- 62, 62, 62, 62, 62, 2, 76, 76, 76, 76, 76, 76, 76, 76, 93, 93,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60, 13, 13,
+ 13, 61, 62, 13, 13, 13, 13, 63, 13, 13, 13, 13, 13, 13, 64, 65,
+ 20, 20, 66, 20, 13, 13, 13, 13, 67, 13, 13, 13, 68, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 19, 19,
+ 19, 19, 19, 19, 19, 0, 19, 0, 0, 0, 0, 0, 0, 0, 19, 19,
+ 19, 19, 19, 0, 0, 0, 0, 0, 26, 26, 0, 0, 0, 0, 1, 1,
+ 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9, 2, 2,
+ 9, 9, 9, 9, 0, 9, 2, 2, 2, 2, 9, 0, 9, 0, 9, 9,
+ 9, 2, 9, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 2, 9, 9, 9, 9, 9, 9, 9, 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 1, 1, 6, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4,
+ 4, 2, 2, 4, 4, 4, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 2, 2, 2, 2, 2, 2, 2, 2, 14, 14,
+ 14, 2, 2, 2, 2, 14, 14, 14, 14, 14, 14, 2, 2, 2, 3, 3,
+ 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 37, 37,
+ 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 2, 37, 37, 37,
+ 37, 2, 2, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+ 2, 2, 2, 2, 2, 2, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 2, 2, 64, 64, 64, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
+ 90, 90, 90, 90, 2, 2, 90, 90, 90, 90, 90, 90, 90, 2, 95, 95,
+ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 2, 2, 95, 2, 37, 37,
+ 37, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3,
+ 2, 2, 2, 2, 2, 3, 3, 3, 0, 3, 3, 3, 3, 3, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 7, 7, 7, 7, 7,
+ 7, 7, 0, 0, 7, 7, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5,
+ 5, 5, 5, 2, 2, 5, 5, 2, 2, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 2,
+ 5, 2, 2, 2, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, 5, 2,
+ 2, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2,
+ 2, 2, 5, 5, 2, 5, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 2, 2, 11, 11, 11, 2, 11, 11, 11, 11, 11,
+ 11, 2, 2, 2, 2, 11, 11, 2, 2, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 2, 11, 11, 11, 11, 11, 11, 11, 2,
+ 11, 11, 2, 11, 11, 2, 11, 11, 2, 2, 11, 2, 11, 11, 11, 2,
+ 2, 11, 11, 11, 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, 11,
+ 11, 11, 11, 2, 11, 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 2, 2, 10, 10, 10, 2, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 2, 10, 10, 10, 2, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, 2,
+ 10, 10, 2, 10, 10, 10, 10, 10, 2, 2, 10, 10, 10, 10, 10, 10,
+ 2, 10, 10, 10, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 10, 10,
+ 10, 10, 2, 2, 10, 10, 10, 10, 2, 2, 2, 2, 2, 2, 2, 10,
+ 10, 10, 10, 10, 10, 10, 2, 21, 21, 21, 2, 21, 21, 21, 21, 21,
+ 21, 21, 21, 2, 2, 21, 21, 2, 2, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 2, 21, 21, 21, 21, 21, 21, 21, 2,
+ 21, 21, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 21, 21, 21, 2,
+ 2, 21, 21, 21, 2, 2, 2, 2, 2, 2, 2, 21, 21, 21, 2, 2,
+ 2, 2, 21, 21, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 2, 2,
+ 22, 22, 2, 22, 22, 22, 22, 22, 22, 2, 2, 2, 22, 22, 22, 2,
+ 22, 22, 22, 22, 2, 2, 2, 22, 22, 2, 22, 2, 22, 22, 2, 2,
+ 2, 22, 22, 2, 2, 2, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 2, 2, 2, 2, 22, 22, 22, 2, 2, 2, 2, 2, 2, 22, 2, 2,
+ 2, 2, 2, 2, 22, 22, 22, 22, 22, 2, 2, 2, 2, 2, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 2, 23, 23, 23, 2,
+ 23, 23, 23, 23, 23, 23, 23, 23, 2, 2, 23, 23, 23, 23, 23, 2,
+ 23, 23, 23, 23, 2, 2, 2, 2, 2, 2, 2, 23, 23, 2, 23, 23,
+ 23, 2, 2, 23, 2, 2, 23, 23, 23, 23, 2, 2, 23, 23, 2, 2,
+ 2, 2, 2, 2, 2, 23, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 2, 16, 16, 16, 2, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 2, 16, 16, 16, 16, 16, 2, 2, 16, 16, 16, 16, 16, 2,
+ 16, 16, 16, 16, 2, 2, 2, 2, 2, 2, 2, 16, 16, 2, 16, 16,
+ 16, 16, 2, 2, 16, 16, 2, 16, 16, 16, 2, 2, 2, 2, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 2, 20, 20, 20, 2,
+ 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20,
+ 20, 20, 2, 2, 20, 20, 2, 36, 36, 36, 2, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2,
+ 36, 36, 36, 36, 36, 36, 36, 36, 2, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 2, 36, 2, 2, 2, 2, 36, 2, 2, 2, 2, 36, 36, 36,
+ 36, 36, 36, 2, 36, 2, 2, 2, 2, 2, 2, 2, 36, 36, 2, 2,
+ 36, 36, 36, 2, 2, 2, 2, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 2, 2, 2, 2, 0, 24, 24,
+ 24, 24, 2, 2, 2, 2, 2, 18, 18, 2, 18, 2, 18, 18, 18, 18,
+ 18, 2, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 2, 18, 2, 18, 18, 18, 18, 18, 18, 18, 2, 2, 18, 18,
+ 18, 18, 18, 2, 18, 2, 18, 18, 18, 18, 18, 18, 18, 2, 18, 18,
+ 2, 2, 18, 18, 18, 18, 25, 25, 25, 25, 25, 25, 25, 25, 2, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 2, 2, 2, 25, 25,
+ 25, 25, 25, 2, 25, 25, 25, 25, 25, 25, 25, 0, 0, 0, 0, 25,
+ 25, 2, 2, 2, 2, 2, 33, 33, 33, 33, 33, 33, 33, 33, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 8, 2, 2,
+ 2, 2, 2, 8, 2, 2, 8, 8, 8, 0, 8, 8, 8, 8, 12, 12,
+ 12, 12, 12, 12, 12, 12, 30, 30, 30, 30, 30, 30, 30, 30, 30, 2,
+ 30, 30, 30, 30, 2, 2, 30, 30, 30, 30, 30, 30, 30, 2, 30, 30,
+ 30, 2, 2, 30, 30, 30, 30, 30, 30, 30, 30, 2, 2, 2, 30, 30,
+ 2, 2, 2, 2, 2, 2, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 2, 2, 28, 28, 28, 28, 28, 28, 28, 28, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 2, 2, 2, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 2,
+ 2, 2, 2, 2, 2, 2, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 2, 2, 2, 2, 2, 2, 2, 2, 2, 45, 44, 44,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 0, 0, 2, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 2, 2, 2, 2, 46, 46,
+ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 2, 46, 46, 46, 2,
+ 46, 46, 2, 2, 2, 2, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 2, 2, 31, 31, 2, 2, 2, 2, 2, 2, 32, 32,
+ 0, 0, 32, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 2, 2, 2, 2, 2, 2, 32, 2, 2, 2, 2, 2, 2, 2, 32, 32,
+ 32, 2, 2, 2, 2, 2, 28, 28, 28, 28, 28, 28, 2, 2, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 2, 48, 48,
+ 48, 48, 2, 2, 2, 2, 48, 2, 2, 2, 48, 48, 48, 48, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 2, 2, 52, 52,
+ 52, 52, 52, 2, 2, 2, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 2, 2, 2, 2, 58, 58, 2, 2, 2, 2, 2, 2, 58, 58,
+ 58, 2, 2, 2, 58, 58, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 2, 2, 54, 54, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 2, 91, 91, 91, 91, 91, 2, 2, 91, 91, 91,
+ 2, 2, 2, 2, 2, 2, 91, 91, 91, 91, 91, 91, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 2, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 2, 62, 62, 76, 76, 76, 76, 76, 76, 76, 76, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 2, 2, 2, 2, 2, 2,
2, 2, 93, 93, 93, 93, 70, 70, 70, 70, 70, 70, 70, 70, 2, 2,
2, 70, 70, 70, 70, 70, 70, 70, 2, 2, 2, 70, 70, 70, 73, 73,
- 73, 73, 73, 73, 73, 73, 6, 2, 2, 2, 2, 2, 2, 2, 8, 8,
+ 73, 73, 73, 73, 73, 73, 6, 6, 6, 2, 2, 2, 2, 2, 8, 8,
8, 2, 2, 8, 8, 8, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0,
1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 19, 19,
@@ -1896,31 +1872,30 @@ _hb_ucd_u8[17884] =
2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0,
0, 0, 0, 0, 9, 0, 0, 0, 19, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 19, 0, 19, 0, 0, 0, 2, 2, 2, 2, 0, 0,
- 0, 2, 2, 2, 2, 2, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0,
- 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 56, 56,
- 56, 56, 56, 56, 56, 56, 55, 55, 55, 55, 2, 2, 2, 2, 2, 55,
- 55, 55, 55, 55, 55, 55, 61, 61, 61, 61, 61, 61, 61, 61, 2, 2,
- 2, 2, 2, 2, 2, 61, 61, 2, 2, 2, 2, 2, 2, 2, 0, 0,
- 0, 0, 0, 0, 2, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, 2, 2, 2, 13, 13,
- 13, 13, 13, 13, 2, 2, 0, 0, 0, 0, 0, 13, 0, 13, 0, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 13, 13,
- 13, 13, 0, 0, 0, 0, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 1,
- 1, 0, 0, 15, 15, 15, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 17, 17, 17, 2, 2,
- 2, 2, 2, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 2, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 2, 0, 0,
- 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 12, 12,
+ 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 27, 27,
+ 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 56, 56, 56, 56, 56, 56, 56, 56, 55, 55,
+ 55, 55, 2, 2, 2, 2, 2, 55, 55, 55, 55, 55, 55, 55, 61, 61,
+ 61, 61, 61, 61, 61, 61, 2, 2, 2, 2, 2, 2, 2, 61, 61, 2,
+ 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 2, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 2, 2, 2, 2, 13, 13, 13, 13, 13, 13, 2, 2, 0, 0,
+ 0, 0, 0, 13, 0, 13, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 1, 1, 1, 1, 12, 12, 13, 13, 13, 13, 0, 0, 0, 0, 2, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 2, 2, 1, 1, 0, 0, 15, 15, 15, 0, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 0, 0, 17, 17, 17, 2, 2, 2, 2, 2, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 2, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 2, 2, 2, 2, 2, 2, 2, 2, 0, 12, 12,
12, 12, 12, 12, 12, 0, 17, 17, 17, 17, 17, 17, 17, 0, 39, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 2, 2, 2, 39, 39,
39, 39, 39, 39, 39, 2, 86, 86, 86, 86, 86, 86, 86, 86, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 2, 2, 2, 2, 79, 79,
79, 79, 79, 79, 79, 79, 0, 0, 19, 19, 19, 19, 19, 19, 0, 0,
- 0, 19, 19, 19, 19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 19, 19,
- 2, 19, 2, 19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 2, 2, 2,
- 19, 19, 19, 19, 19, 19, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 65, 65,
+ 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 2, 2, 19, 19,
+ 2, 19, 2, 19, 19, 19, 2, 2, 19, 19, 19, 19, 19, 19, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 2, 2, 2, 65, 65,
65, 65, 65, 65, 65, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 75, 2, 2, 2, 2, 2, 2, 2, 2, 75, 75, 75, 75,
2, 2, 2, 2, 2, 2, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
@@ -1943,36 +1918,38 @@ _hb_ucd_u8[17884] =
2, 14, 14, 2, 14, 14, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2,
2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2,
3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 1,
- 1, 1, 1, 1, 6, 6, 0, 0, 0, 2, 0, 0, 0, 0, 3, 3,
- 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 0, 2, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17,
- 17, 17, 17, 17, 0, 0, 2, 2, 12, 12, 12, 12, 12, 12, 2, 2,
- 12, 12, 12, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 2, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 2, 49, 49, 49, 2, 49, 49, 2, 49, 49, 49,
- 49, 49, 49, 49, 2, 2, 49, 49, 49, 2, 2, 2, 2, 2, 0, 0,
- 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0,
- 0, 0, 0, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 0, 0,
- 0, 0, 0, 1, 2, 2, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
- 71, 71, 71, 2, 2, 2, 67, 67, 67, 67, 67, 67, 67, 67, 67, 2,
- 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
- 41, 2, 2, 2, 2, 2,118,118,118,118,118,118,118,118,118,118,
- 118, 2, 2, 2, 2, 2, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 2, 53, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
- 59, 59, 2, 2, 2, 2, 59, 59, 59, 59, 59, 59, 2, 2, 40, 40,
- 40, 40, 40, 40, 40, 40, 51, 51, 51, 51, 51, 51, 51, 51, 50, 50,
- 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 2, 2, 50, 50,
- 2, 2, 2, 2, 2, 2,135,135,135,135,135,135,135,135,135,135,
- 135,135, 2, 2, 2, 2,106,106,106,106,106,106,106,106,104,104,
- 104,104,104,104,104,104,104,104,104,104, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2,104,161,161,161,161,161,161,161,161,161,161,
- 161, 2,161,161,161,161,161,161,161, 2,161,161, 2,161,161,161,
- 2,161,161,161,161,161,161,161, 2,161,161, 2, 2, 2,110,110,
- 110,110,110,110,110,110,110,110,110,110,110,110,110, 2,110,110,
- 110,110,110,110, 2, 2, 19, 19, 19, 19, 19, 19, 2, 19, 19, 2,
- 19, 19, 19, 19, 19, 19, 47, 47, 47, 47, 47, 47, 2, 2, 47, 2,
+ 1, 1, 1, 1, 6, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3,
+ 3, 3, 3, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 2, 2,
+ 12, 12, 12, 12, 12, 12, 2, 2, 12, 12, 12, 2, 2, 2, 2, 0,
+ 0, 0, 0, 0, 2, 2, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 2, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 2, 49, 49,
+ 49, 2, 49, 49, 2, 49, 49, 49, 49, 49, 49, 49, 2, 2, 49, 49,
+ 49, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0,
+ 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 2,
+ 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 2, 2, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 2, 2, 2, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 2, 2, 2, 2, 2, 2, 2, 1, 0,
+ 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 2, 2, 2, 2, 2, 2, 2, 2, 2, 42, 42, 42, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 2, 2, 2, 2, 2,118,118,
+ 118,118,118,118,118,118,118,118,118, 2, 2, 2, 2, 2, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 2, 53, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 2, 2, 2, 2, 59, 59,
+ 59, 59, 59, 59, 2, 2, 40, 40, 40, 40, 40, 40, 40, 40, 51, 51,
+ 51, 51, 51, 51, 51, 51, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 2, 2, 50, 50, 2, 2, 2, 2, 2, 2,135,135,
+ 135,135,135,135,135,135,135,135,135,135, 2, 2, 2, 2,106,106,
+ 106,106,106,106,106,106,104,104,104,104,104,104,104,104,104,104,
+ 104,104, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,104,161,161,
+ 161,161,161,161,161,161,161,161,161, 2,161,161,161,161,161,161,
+ 161, 2,161,161, 2,161,161,161, 2,161,161,161,161,161,161,161,
+ 2,161,161, 2, 2, 2,170,170,170,170,170,170,170,170,170,170,
+ 170,170, 2, 2, 2, 2,110,110,110,110,110,110,110,110,110,110,
+ 110,110,110,110,110, 2,110,110,110,110,110,110, 2, 2, 19, 19,
+ 19, 19, 19, 19, 2, 19, 19, 2, 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 2, 2, 2, 2, 2, 47, 47, 47, 47, 47, 47, 2, 2, 47, 2,
47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 2, 47, 47, 2, 2, 2, 47, 2, 2, 47, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 2, 81,120,120,
@@ -1998,122 +1975,135 @@ _hb_ucd_u8[17884] =
122,122,122,122,122,122, 89, 89, 89, 89, 89, 89, 89, 89, 89, 2,
2, 2, 2, 2, 2, 2,130,130,130,130,130,130,130,130,130,130,
130, 2, 2, 2, 2, 2, 2, 2,130,130,130,130,130,130,144,144,
- 144,144,144,144,144,144,144,144, 2, 2, 2, 2, 2, 2,156,156,
+ 144,144,144,144,144,144,144,144, 2, 2, 2, 2, 2, 2,165,165,
+ 165,165,165,165,165,165,165,165,165,165,165,165, 2, 2, 2,165,
+ 165,165,165,165,165,165, 2, 2, 2, 2, 2, 2,165,165,156,156,
156,156,156,156,156,156,156,156, 2,156,156,156, 2, 2,156,156,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3,147,147,
- 147,147,147,147,147,147,148,148,148,148,148,148,148,148,148,148,
- 2, 2, 2, 2, 2, 2,158,158,158,158,158,158,158,158,158,158,
- 2, 2, 2, 2, 2, 2,153,153,153,153,153,153,153,153,153,153,
- 153,153, 2, 2, 2, 2,149,149,149,149,149,149,149,149,149,149,
- 149,149,149,149,149, 2, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 94, 2, 2, 2, 2, 94, 94, 94, 94, 94, 94, 2, 2,
- 2, 2, 2, 2, 2, 94, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85, 2, 2,101,101,
- 101,101,101,101,101,101,101, 2, 2, 2, 2, 2, 2, 2,101,101,
- 2, 2, 2, 2, 2, 2, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 2, 96, 96,111,111,111,111,111,111,111,111,111,111,
- 111,111,111,111,111, 2,100,100,100,100,100,100,100,100, 2, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2,108,108,
- 108,108,108,108,108,108,108,108, 2,108,108,108,108,108,108,108,
- 2, 2, 2, 2, 2, 2,129,129,129,129,129,129,129, 2,129, 2,
- 129,129,129,129, 2,129,129,129,129,129,129,129,129,129,129,129,
- 129,129,129,129, 2,129,129,129, 2, 2, 2, 2, 2, 2,109,109,
- 109,109,109,109,109,109,109,109,109, 2, 2, 2, 2, 2,109,109,
- 2, 2, 2, 2, 2, 2,107,107,107,107, 2,107,107,107,107,107,
- 107,107,107, 2, 2,107,107, 2, 2,107,107,107,107,107,107,107,
- 107,107,107,107,107,107,107, 2,107,107,107,107,107,107,107, 2,
- 107,107, 2,107,107,107,107,107, 2, 1,107,107,107,107,107, 2,
- 2,107,107,107, 2, 2,107, 2, 2, 2, 2, 2, 2,107, 2, 2,
- 2, 2, 2,107,107,107,107,107,107,107, 2, 2,107,107,107,107,
- 107,107,107, 2, 2, 2,137,137,137,137,137,137,137,137,137,137,
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2,
+ 2, 2, 3, 3, 3, 3,147,147,147,147,147,147,147,147,148,148,
+ 148,148,148,148,148,148,148,148, 2, 2, 2, 2, 2, 2,158,158,
+ 158,158,158,158,158,158,158,158, 2, 2, 2, 2, 2, 2,153,153,
+ 153,153,153,153,153,153,153,153,153,153, 2, 2, 2, 2,149,149,
+ 149,149,149,149,149,149,149,149,149,149,149,149,149, 2, 94, 94,
+ 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 2, 2, 2, 2,
+ 94, 94, 94, 94, 94, 94, 2, 2, 2, 2, 2, 2, 2, 94, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 85, 2, 2,101,101,101,101,101,101,101,101,101, 2,
+ 2, 2, 2, 2, 2, 2,101,101, 2, 2, 2, 2, 2, 2, 96, 96,
+ 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 2, 96, 96,111,111,
+ 111,111,111,111,111,111,111,111,111,111,111,111,111, 2,100,100,
+ 100,100,100,100,100,100, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 2, 2, 2,108,108,108,108,108,108,108,108,108,108,
+ 2,108,108,108,108,108,108,108, 2, 2, 2, 2, 2, 2,129,129,
+ 129,129,129,129,129, 2,129, 2,129,129,129,129, 2,129,129,129,
+ 129,129,129,129,129,129,129,129,129,129,129,129, 2,129,129,129,
+ 2, 2, 2, 2, 2, 2,109,109,109,109,109,109,109,109,109,109,
+ 109, 2, 2, 2, 2, 2,109,109, 2, 2, 2, 2, 2, 2,107,107,
+ 107,107, 2,107,107,107,107,107,107,107,107, 2, 2,107,107, 2,
+ 2,107,107,107,107,107,107,107,107,107,107,107,107,107,107, 2,
+ 107,107,107,107,107,107,107, 2,107,107, 2,107,107,107,107,107,
+ 2, 1,107,107,107,107,107, 2, 2,107,107,107, 2, 2,107, 2,
+ 2, 2, 2, 2, 2,107, 2, 2, 2, 2, 2,107,107,107,107,107,
+ 107,107, 2, 2,107,107,107,107,107,107,107, 2, 2, 2,171,171,
+ 171,171,171,171,171,171,171,171, 2,171, 2, 2,171, 2,171,171,
+ 171,171,171,171, 2,171,171, 2,171, 2, 2,171, 2,171,171,171,
+ 171, 2,171,171,171,171,171, 2, 2, 2, 2, 2, 2, 2, 2,171,
+ 171, 2, 2, 2, 2, 2,137,137,137,137,137,137,137,137,137,137,
137,137, 2,137,137,137,137,137, 2, 2, 2, 2, 2, 2,124,124,
124,124,124,124,124,124,124,124, 2, 2, 2, 2, 2, 2,123,123,
123,123,123,123,123,123,123,123,123,123,123,123, 2, 2,114,114,
114,114,114,114,114,114,114,114,114,114,114, 2, 2, 2,114,114,
2, 2, 2, 2, 2, 2, 32, 32, 32, 32, 32, 2, 2, 2,102,102,
- 102,102,102,102,102,102,102,102, 2, 2, 2, 2, 2, 2,126,126,
- 126,126,126,126,126,126,126,126,126, 2, 2,126,126,126,126,126,
- 126,126, 2, 2, 2, 2,126,126,126,126,126,126,126, 2,142,142,
- 142,142,142,142,142,142,142,142,142,142, 2, 2, 2, 2,125,125,
- 125,125,125,125,125,125,125,125,125, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2,125,154,154,154,154,154,154,154, 2, 2,154,
- 2, 2,154,154,154,154,154,154,154,154, 2,154,154, 2,154,154,
- 154,154,154,154,154,154,154,154,154,154,154,154, 2,154,154, 2,
- 2,154,154,154,154,154,154,154, 2, 2, 2, 2, 2, 2,150,150,
- 150,150,150,150,150,150, 2, 2,150,150,150,150,150,150,150,150,
- 150,150,150, 2, 2, 2,141,141,141,141,141,141,141,141,140,140,
- 140,140,140,140,140,140,140,140,140, 2, 2, 2, 2, 2,121,121,
- 121,121,121,121,121,121,121, 2, 2, 2, 2, 2, 2, 2, 7, 7,
- 2, 2, 2, 2, 2, 2,133,133,133,133,133,133,133,133,133, 2,
- 133,133,133,133,133,133,133,133,133,133,133,133,133, 2,133,133,
- 133,133,133,133, 2, 2,133,133,133,133,133, 2, 2, 2,134,134,
- 134,134,134,134,134,134, 2, 2,134,134,134,134,134,134, 2,134,
- 134,134,134,134,134,134,134,134,134,134,134,134,134, 2,138,138,
- 138,138,138,138,138, 2,138,138, 2,138,138,138,138,138,138,138,
- 138,138,138,138,138,138, 2, 2,138, 2,138,138, 2,138,138,138,
- 2, 2, 2, 2, 2, 2,143,143,143,143,143,143, 2,143,143, 2,
- 143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,
- 143,143,143,143,143, 2,143,143, 2,143,143,143,143,143,143, 2,
- 2, 2, 2, 2, 2, 2,143,143, 2, 2, 2, 2, 2, 2,145,145,
- 145,145,145,145,145,145,145, 2, 2, 2, 2, 2, 2, 2,163,163,
- 163,163,163,163,163,163,163, 2,163,163,163,163,163,163,163,163,
- 163, 2, 2, 2,163,163,163,163, 2, 2, 2, 2, 2, 2, 86, 2,
- 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 22, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
- 2, 2, 2, 2, 2, 2, 63, 63, 63, 63, 63, 63, 63, 2, 63, 63,
- 63, 63, 63, 2, 2, 2, 63, 63, 63, 63, 2, 2, 2, 2,157,157,
- 157,157,157,157,157,157,157,157,157, 2, 2, 2, 2, 2, 80, 80,
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 2, 2,127,127,
- 127,127,127,127,127,127,127,127,127,127,127,127,127, 2, 79, 2,
+ 102,102,102,102,102,102,102,102, 2, 2, 2, 2, 2, 2, 33, 33,
+ 33, 33, 2, 2, 2, 2,126,126,126,126,126,126,126,126,126,126,
+ 126, 2, 2,126,126,126,126,126,126,126, 2, 2, 2, 2,126,126,
+ 126,126,126,126,126, 2,142,142,142,142,142,142,142,142,142,142,
+ 142,142, 2, 2, 2, 2,125,125,125,125,125,125,125,125,125,125,
+ 125, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,125,154,154,
+ 154,154,154,154,154, 2, 2,154, 2, 2,154,154,154,154,154,154,
+ 154,154, 2,154,154, 2,154,154,154,154,154,154,154,154,154,154,
+ 154,154,154,154, 2,154,154, 2, 2,154,154,154,154,154,154,154,
+ 2, 2, 2, 2, 2, 2,150,150,150,150,150,150,150,150, 2, 2,
+ 150,150,150,150,150,150,150,150,150,150,150, 2, 2, 2,141,141,
+ 141,141,141,141,141,141,140,140,140,140,140,140,140,140,140,140,
+ 140, 2, 2, 2, 2, 2,121,121,121,121,121,121,121,121,121, 2,
+ 2, 2, 2, 2, 2, 2, 7, 7, 2, 2, 2, 2, 2, 2,169,169,
+ 169,169,169,169,169,169,169,169, 2, 2, 2, 2, 2, 2,133,133,
+ 133,133,133,133,133,133,133, 2,133,133,133,133,133,133,133,133,
+ 133,133,133,133,133, 2,133,133,133,133,133,133, 2, 2,133,133,
+ 133,133,133, 2, 2, 2,134,134,134,134,134,134,134,134, 2, 2,
+ 134,134,134,134,134,134, 2,134,134,134,134,134,134,134,134,134,
+ 134,134,134,134,134, 2,138,138,138,138,138,138,138, 2,138,138,
+ 2,138,138,138,138,138,138,138,138,138,138,138,138,138, 2, 2,
+ 138, 2,138,138, 2,138,138,138, 2, 2, 2, 2, 2, 2,143,143,
+ 143,143,143,143, 2,143,143, 2,143,143,143,143,143,143,143,143,
+ 143,143,143,143,143,143,143,143,143,143,143,143,143, 2,143,143,
+ 2,143,143,143,143,143,143, 2, 2, 2, 2, 2, 2, 2,143,143,
+ 2, 2, 2, 2, 2, 2,145,145,145,145,145,145,145,145,145, 2,
+ 2, 2, 2, 2, 2, 2,163,163,163,163,163,163,163,163,163, 2,
+ 163,163,163,163,163,163,163,163,163, 2, 2, 2,163,163,163,163,
+ 163, 2, 2, 2, 2, 2, 86, 2, 2, 2, 2, 2, 2, 2, 22, 22,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63, 2, 2, 2, 2, 2, 2, 63, 63,
+ 63, 63, 63, 63, 63, 2, 63, 63, 63, 63, 63, 2, 2, 2, 63, 63,
+ 63, 63, 2, 2, 2, 2,157,157,157,157,157,157,157,157,157,157,
+ 157, 2, 2, 2, 2, 2, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 2, 2, 80, 80, 80, 2, 2, 2, 2, 2,127,127,
+ 127,127,127,127,127,127,127,127,127,127,127,127,127, 2,166,166,
+ 166,166,166,166,166,166,166,166, 2, 2, 2, 2, 2, 2, 79, 2,
2, 2, 2, 2, 2, 2,115,115,115,115,115,115,115,115,115,115,
115,115,115,115,115, 2,115,115, 2, 2, 2, 2,115,115,159,159,
159,159,159,159,159,159,159,159,159,159,159,159,159, 2,159,159,
2, 2, 2, 2, 2, 2,103,103,103,103,103,103,103,103,103,103,
103,103,103,103, 2, 2,119,119,119,119,119,119,119,119,119,119,
119,119,119,119, 2, 2,119,119, 2,119,119,119,119,119, 2, 2,
- 2, 2, 2,119,119,119,146,146,146,146,146,146,146,146,146,146,
+ 2, 2, 2,119,119,119,167,167,167,167,167,167,167,167,167,167,
+ 2, 2, 2, 2, 2, 2,146,146,146,146,146,146,146,146,146,146,
146, 2, 2, 2, 2, 2, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, 2, 2, 99,136,139,
13, 13,155, 2, 2, 2,136,136,136,136,136,136,136,136,155,155,
- 155,155,155,155,155,155,155,155,155,155,155,155, 2, 2,136, 2,
- 2, 2, 2, 2, 2, 2, 17, 17, 17, 17, 2, 17, 17, 17, 17, 17,
- 17, 17, 2, 17, 17, 2, 17, 15, 15, 15, 15, 15, 15, 15, 17, 17,
- 17, 2, 2, 2, 2, 2, 2, 2, 15, 2, 2, 2, 2, 2, 15, 15,
- 15, 2, 2, 17, 2, 2, 2, 2, 2, 2, 17, 17, 17, 17,139,139,
- 139,139,139,139,139,139,139,139,139,139, 2, 2, 2, 2,105,105,
- 105,105,105,105,105,105,105,105,105, 2, 2, 2, 2, 2,105,105,
- 105,105,105, 2, 2, 2,105, 2, 2, 2, 2, 2, 2, 2,105,105,
- 2, 2,105,105,105,105, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
- 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 2,
- 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0,
- 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,131,131,131,131,131,131,131,131,131,131,
- 131,131, 2, 2, 2, 2, 2, 2, 2,131,131,131,131,131, 2,131,
- 131,131,131,131,131,131, 2, 2, 2, 2, 2, 19, 19, 19, 56, 56,
- 56, 56, 56, 56, 56, 2, 56, 2, 2, 56, 56, 56, 56, 56, 56, 56,
- 2, 56, 56, 2, 56, 56, 56, 56, 56, 2, 2, 2, 2, 2, 6, 6,
- 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,151,151,
- 151,151,151,151,151,151,151,151,151,151,151, 2, 2, 2,151,151,
- 151,151,151,151, 2, 2,151,151, 2, 2, 2, 2,151,151,160,160,
- 160,160,160,160,160,160,160,160,160,160,160,160,160, 2,152,152,
- 152,152,152,152,152,152,152,152, 2, 2, 2, 2, 2,152,164,164,
- 164,164,164,164,164,164,164,164, 2, 2, 2, 2, 2, 2, 30, 30,
- 30, 30, 2, 30, 30, 2,113,113,113,113,113,113,113,113,113,113,
- 113,113,113, 2, 2,113,113,113,113,113,113,113,113, 2,132,132,
- 132,132,132,132,132,132,132,132,132,132, 2, 2, 2, 2,132,132,
- 2, 2, 2, 2,132,132, 3, 3, 3, 3, 2, 3, 3, 3, 2, 3,
- 3, 2, 3, 2, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 2, 3,
- 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 3,
- 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3,
- 3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 15, 0,
+ 155,155,155,155,155,155,155,155,155,155,155,155, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2,155,136, 2, 2, 2, 2, 2, 2, 2, 17, 17,
+ 17, 17, 2, 17, 17, 17, 17, 17, 17, 17, 2, 17, 17, 2, 17, 15,
+ 15, 15, 15, 15, 15, 15, 17, 17, 17, 2, 2, 2, 2, 2, 2, 2,
+ 15, 2, 2, 2, 2, 2, 15, 15, 15, 2, 2, 17, 2, 2, 2, 2,
+ 2, 2, 17, 17, 17, 17,139,139,139,139,139,139,139,139,139,139,
+ 139,139, 2, 2, 2, 2,105,105,105,105,105,105,105,105,105,105,
+ 105, 2, 2, 2, 2, 2,105,105,105,105,105, 2, 2, 2,105, 2,
+ 2, 2, 2, 2, 2, 2,105,105, 2, 2,105,105,105,105, 1, 1,
+ 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
+ 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 0, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,131,131,
+ 131,131,131,131,131,131,131,131,131,131, 2, 2, 2, 2, 2, 2,
+ 2,131,131,131,131,131, 2,131,131,131,131,131,131,131, 2, 2,
+ 2, 2, 2, 19, 19, 19, 56, 56, 56, 56, 56, 56, 56, 2, 56, 2,
+ 2, 56, 56, 56, 56, 56, 56, 56, 2, 56, 56, 2, 56, 56, 56, 56,
+ 56, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 6,151,151,151,151,151,151,151,151,151,151,
+ 151,151,151, 2, 2, 2,151,151,151,151,151,151, 2, 2,151,151,
+ 2, 2, 2, 2,151,151,160,160,160,160,160,160,160,160,160,160,
+ 160,160,160,160,160, 2,152,152,152,152,152,152,152,152,152,152,
+ 2, 2, 2, 2, 2,152,164,164,164,164,164,164,164,164,164,164,
+ 2, 2, 2, 2, 2, 2,168,168,168,168,168,168,168,168,168,168,
+ 168, 2, 2, 2, 2,168, 30, 30, 30, 30, 2, 30, 30, 2,113,113,
+ 113,113,113,113,113,113,113,113,113,113,113, 2, 2,113,113,113,
+ 113,113,113,113,113, 2,132,132,132,132,132,132,132,132,132,132,
+ 132,132, 2, 2, 2, 2,132,132, 2, 2, 2, 2,132,132, 3, 3,
+ 3, 3, 2, 3, 3, 3, 2, 3, 3, 2, 3, 2, 2, 3, 2, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 2, 3,
+ 2, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 3,
+ 2, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 3, 3, 3, 2, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 2, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 15, 0,
0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2,
- 2, 0, 0, 0, 0, 0, 13, 2, 2, 2, 2, 2, 2, 2, 13, 13,
+ 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 13, 2, 2, 2, 2, 2, 2, 2, 13, 13,
13, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 1,
2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, 9, 11, 12, 13,
9, 9, 9, 14, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9,
@@ -2123,13 +2113,13 @@ _hb_ucd_u8[17884] =
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16, 17, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 18, 19, 20, 9, 21, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 18, 9, 9, 9, 9, 9, 19, 20, 21, 9, 22, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 23, 9,
+ 9, 9, 9, 9, 24, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 25, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
@@ -2138,7 +2128,7 @@ _hb_ucd_u8[17884] =
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 23, 24, 0, 0, 0, 0,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 26, 27, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2175,23 +2165,29 @@ _hb_ucd_u8[17884] =
132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,
148,149,150,151,152,153,154,155,156,157, 0, 0, 0,158,159,160,
161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,162,163, 0, 0, 0, 0, 0, 0, 0,164, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,162, 0,163, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,164,165, 0, 0, 0, 0, 0, 0, 0,166, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 167, 0, 0, 0,168,169, 0, 0,170, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,172, 0, 0, 0, 0, 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,
- 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,167, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,
+ 0, 0, 0, 0, 0, 0, 0, 0, 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,169,170, 0, 0, 0, 0,171,172, 0, 0, 0,173,174,175,176,
- 177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,
- 193,194,195,196,197,198,199,200,201,202,203,204,205,206, 0, 0,
+ 0, 0,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,176,177, 0, 0, 0, 0,178,179, 0, 0, 0,180,181,182,183,
+ 184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,
+ 200,201,202,203,204,205,206,207,208,209,210,211,212,213, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
};
static const uint16_t
-_hb_ucd_u16[9344] =
+_hb_ucd_u16[10400] =
{
0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12,
13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23,
@@ -2210,9 +2206,10 @@ _hb_ucd_u16[9344] =
136, 48, 48, 137, 138, 139, 140, 140, 141, 48, 142, 143, 144, 145, 140, 140,
146, 147, 148, 149, 150, 48, 151, 152, 153, 154, 32, 155, 156, 157, 140, 140,
48, 48, 158, 159, 160, 161, 162, 163, 164, 165, 9, 9, 166, 11, 11, 167,
- 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 168, 169, 48, 48,
- 168, 48, 48, 170, 171, 172, 48, 48, 48, 171, 48, 48, 48, 173, 174, 175,
- 48, 176, 9, 9, 9, 9, 9, 177, 178, 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, 168, 169, 48, 48, 168, 48, 48, 170, 171, 172, 48, 48,
+ 48, 171, 48, 48, 48, 173, 174, 175, 48, 176, 9, 9, 9, 9, 9, 177,
+ 178, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 179, 48, 180, 181, 48, 48, 48, 48, 182, 183,
48, 184, 48, 185, 48, 186, 187, 188, 48, 48, 48, 189, 190, 191, 192, 193,
194, 192, 48, 48, 195, 48, 48, 196, 197, 48, 198, 48, 48, 48, 48, 199,
@@ -2225,28 +2222,34 @@ _hb_ucd_u16[9344] =
241, 242, 241, 241, 242, 243, 241, 244, 245, 245, 245, 246, 247, 248, 249, 250,
251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 272, 273, 274, 275, 209, 276, 277, 209, 278,
- 279, 279, 279, 279, 279, 279, 279, 279, 280, 209, 281, 209, 209, 209, 209, 282,
- 209, 283, 279, 284, 209, 285, 286, 209, 209, 209, 287, 140, 288, 140, 271, 271,
- 271, 289, 209, 209, 209, 209, 290, 271, 209, 209, 209, 209, 209, 209, 209, 209,
- 209, 209, 209, 291, 292, 209, 209, 293, 209, 209, 209, 209, 209, 209, 294, 209,
- 209, 209, 209, 209, 209, 209, 295, 296, 271, 297, 209, 209, 298, 279, 299, 279,
- 300, 301, 279, 279, 279, 302, 279, 303, 209, 209, 209, 279, 304, 209, 209, 305,
- 209, 306, 209, 209, 209, 209, 209, 209, 9, 9, 9, 11, 11, 11, 307, 308,
- 13, 13, 13, 13, 13, 13, 309, 310, 11, 11, 311, 48, 48, 48, 312, 313,
- 48, 314, 315, 315, 315, 315, 32, 32, 316, 317, 318, 319, 320, 321, 140, 140,
- 209, 322, 209, 209, 209, 209, 209, 323, 209, 209, 209, 209, 209, 324, 140, 209,
- 325, 326, 327, 328, 136, 48, 48, 48, 48, 329, 178, 48, 48, 48, 48, 330,
- 331, 48, 48, 136, 48, 48, 48, 48, 200, 332, 48, 48, 209, 209, 333, 48,
- 209, 334, 335, 209, 336, 337, 209, 209, 335, 209, 209, 337, 209, 209, 209, 209,
- 48, 48, 48, 48, 209, 209, 209, 209, 48, 338, 48, 48, 48, 48, 48, 48,
- 151, 209, 209, 209, 287, 48, 48, 229, 339, 48, 340, 140, 13, 13, 341, 342,
- 13, 343, 48, 48, 48, 48, 344, 345, 31, 346, 347, 348, 13, 13, 13, 349,
- 350, 351, 352, 353, 354, 355, 140, 356, 357, 48, 358, 359, 48, 48, 48, 360,
- 361, 48, 48, 362, 363, 192, 32, 364, 64, 48, 365, 48, 366, 367, 48, 151,
- 76, 48, 48, 368, 369, 370, 371, 372, 48, 48, 373, 374, 375, 376, 48, 377,
- 48, 48, 48, 378, 379, 380, 381, 382, 383, 384, 315, 11, 11, 385, 386, 11,
- 11, 11, 11, 11, 48, 48, 387, 192, 48, 48, 388, 48, 389, 48, 48, 206,
- 390, 390, 390, 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, 391, 391,
+ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
+ 280, 209, 281, 209, 209, 209, 209, 282, 209, 283, 279, 284, 209, 285, 286, 209,
+ 209, 209, 176, 140, 287, 140, 271, 271, 271, 288, 209, 209, 209, 209, 289, 271,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 290, 291, 209, 209, 292,
+ 209, 209, 209, 209, 209, 209, 293, 209, 209, 209, 209, 209, 209, 209, 209, 209,
+ 209, 209, 209, 209, 209, 209, 294, 295, 271, 296, 209, 209, 297, 279, 298, 279,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
+ 279, 279, 279, 279, 279, 279, 279, 279, 299, 300, 279, 279, 279, 301, 279, 302,
+ 209, 209, 209, 279, 303, 209, 209, 304, 209, 305, 209, 209, 209, 209, 209, 209,
+ 9, 9, 9, 11, 11, 11, 306, 307, 13, 13, 13, 13, 13, 13, 308, 309,
+ 11, 11, 310, 48, 48, 48, 311, 312, 48, 313, 314, 314, 314, 314, 32, 32,
+ 315, 316, 317, 318, 319, 320, 140, 140, 209, 321, 209, 209, 209, 209, 209, 322,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, 140, 209,
+ 324, 325, 326, 327, 136, 48, 48, 48, 48, 328, 178, 48, 48, 48, 48, 329,
+ 330, 48, 48, 136, 48, 48, 48, 48, 200, 331, 48, 48, 209, 209, 332, 48,
+ 209, 333, 334, 209, 335, 336, 209, 209, 334, 209, 209, 336, 209, 209, 209, 209,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 209, 209, 209, 209,
+ 48, 337, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 151, 209, 209, 209, 338, 48, 48, 229,
+ 339, 48, 340, 140, 13, 13, 341, 342, 13, 343, 48, 48, 48, 48, 344, 345,
+ 31, 346, 347, 348, 13, 13, 13, 349, 350, 351, 352, 353, 354, 355, 140, 356,
+ 357, 48, 358, 359, 48, 48, 48, 360, 361, 48, 48, 362, 363, 192, 32, 364,
+ 64, 48, 365, 48, 366, 367, 48, 151, 76, 48, 48, 368, 369, 370, 371, 372,
+ 48, 48, 373, 374, 375, 376, 48, 377, 48, 48, 48, 378, 379, 380, 381, 382,
+ 383, 384, 314, 11, 11, 385, 386, 11, 11, 11, 11, 11, 48, 48, 387, 192,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 388, 48, 389, 48, 48, 206,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, 48, 207, 140, 140,
392, 393, 394, 395, 396, 48, 48, 48, 48, 48, 48, 397, 398, 399, 48, 48,
48, 48, 48, 400, 209, 48, 48, 48, 48, 401, 48, 48, 402, 140, 140, 403,
@@ -2257,108 +2260,204 @@ _hb_ucd_u16[9344] =
140, 140, 140, 140, 140, 140, 140, 140, 48, 151, 48, 48, 48, 100, 429, 430,
48, 48, 431, 48, 432, 48, 48, 433, 48, 434, 48, 48, 435, 436, 140, 140,
9, 9, 437, 11, 11, 48, 48, 48, 48, 204, 192, 9, 9, 438, 11, 439,
- 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 140, 140, 140, 140,
- 48, 48, 48, 314, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140,
+ 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 48, 48, 48, 388,
+ 48, 48, 48, 313, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140,
448, 48, 48, 449, 48, 450, 48, 451, 48, 200, 452, 140, 140, 140, 48, 453,
48, 454, 48, 455, 140, 140, 140, 140, 48, 48, 48, 456, 271, 457, 271, 271,
458, 459, 48, 460, 461, 462, 48, 463, 48, 464, 140, 140, 465, 48, 466, 467,
48, 48, 48, 468, 48, 469, 48, 470, 48, 471, 472, 140, 140, 140, 140, 140,
48, 48, 48, 48, 196, 140, 140, 140, 9, 9, 9, 473, 11, 11, 11, 474,
- 48, 48, 475, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 271, 476,
- 48, 48, 477, 478, 140, 140, 140, 479, 48, 464, 480, 48, 62, 481, 140, 48,
- 482, 140, 140, 48, 483, 140, 48, 314, 484, 48, 48, 485, 486, 457, 487, 488,
- 222, 48, 48, 489, 490, 48, 196, 192, 491, 48, 492, 493, 494, 48, 48, 495,
- 222, 48, 48, 496, 497, 498, 499, 500, 48, 97, 501, 502, 503, 140, 140, 140,
- 504, 505, 506, 48, 48, 507, 508, 192, 509, 83, 84, 510, 511, 512, 513, 514,
- 48, 48, 48, 515, 516, 517, 478, 140, 48, 48, 48, 518, 519, 192, 140, 140,
- 48, 48, 520, 521, 522, 523, 140, 140, 48, 48, 48, 524, 525, 192, 526, 140,
- 48, 48, 527, 528, 192, 140, 140, 140, 48, 173, 529, 530, 314, 140, 140, 140,
- 48, 48, 501, 531, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 532,
- 533, 534, 48, 535, 536, 192, 140, 140, 140, 140, 537, 48, 48, 538, 539, 140,
- 540, 48, 48, 541, 542, 543, 48, 48, 544, 545, 546, 48, 48, 48, 48, 196,
- 547, 140, 140, 140, 140, 140, 140, 140, 84, 48, 520, 548, 549, 148, 175, 550,
- 48, 551, 552, 553, 140, 140, 140, 140, 554, 48, 48, 555, 556, 192, 557, 48,
- 558, 559, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 560,
- 561, 115, 48, 562, 563, 192, 140, 140, 140, 140, 140, 100, 271, 564, 565, 566,
- 48, 207, 140, 140, 140, 140, 140, 140, 272, 272, 272, 272, 272, 272, 567, 568,
- 48, 48, 48, 48, 388, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 569,
- 48, 48, 48, 570, 571, 572, 140, 140, 48, 48, 48, 48, 314, 140, 140, 140,
- 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 573,
- 48, 48, 48, 574, 575, 576, 577, 578, 48, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 9, 9, 11, 11, 271, 579, 140, 140, 140, 140, 140, 140,
- 48, 48, 48, 48, 580, 581, 582, 582, 583, 584, 140, 140, 140, 140, 585, 586,
- 48, 48, 48, 48, 48, 48, 48, 440, 48, 48, 48, 48, 48, 199, 140, 140,
- 196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 587,
- 48, 48, 588, 589, 140, 590, 591, 48, 48, 48, 48, 48, 48, 48, 48, 206,
- 48, 48, 48, 48, 48, 48, 71, 151, 196, 592, 593, 140, 140, 140, 140, 140,
- 32, 32, 594, 32, 595, 209, 209, 209, 209, 209, 209, 209, 323, 140, 140, 140,
- 209, 209, 209, 209, 209, 209, 209, 324, 209, 209, 596, 209, 209, 209, 597, 598,
- 599, 209, 600, 209, 209, 209, 288, 140, 209, 209, 209, 209, 601, 140, 140, 140,
- 140, 140, 140, 140, 271, 602, 271, 602, 209, 209, 209, 209, 209, 287, 271, 461,
- 9, 603, 11, 604, 605, 606, 241, 9, 607, 608, 609, 610, 611, 9, 603, 11,
- 612, 613, 11, 614, 615, 616, 617, 9, 618, 11, 9, 603, 11, 604, 605, 11,
- 241, 9, 607, 617, 9, 618, 11, 9, 603, 11, 619, 9, 620, 621, 622, 623,
- 11, 624, 9, 625, 626, 627, 628, 11, 629, 9, 630, 11, 631, 632, 632, 632,
- 32, 32, 32, 633, 32, 32, 634, 635, 636, 637, 45, 140, 140, 140, 140, 140,
- 638, 639, 640, 140, 140, 140, 140, 140, 641, 642, 643, 27, 27, 27, 644, 140,
- 645, 140, 140, 140, 140, 140, 140, 140, 48, 48, 151, 646, 647, 140, 140, 140,
- 140, 48, 648, 140, 48, 48, 649, 650, 140, 140, 140, 140, 140, 48, 651, 192,
- 140, 140, 140, 140, 140, 140, 652, 200, 48, 48, 48, 48, 653, 595, 140, 140,
- 9, 9, 607, 11, 654, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 499,
- 271, 271, 655, 656, 140, 140, 140, 140, 499, 271, 657, 658, 140, 140, 140, 140,
- 659, 48, 660, 661, 662, 663, 664, 665, 666, 206, 667, 206, 140, 140, 140, 668,
- 209, 209, 669, 209, 209, 209, 209, 209, 209, 323, 334, 670, 670, 670, 209, 324,
- 671, 209, 209, 209, 209, 209, 209, 209, 209, 209, 672, 140, 140, 140, 673, 209,
- 674, 209, 209, 669, 675, 676, 324, 140, 209, 209, 209, 209, 209, 209, 209, 677,
- 209, 209, 209, 209, 209, 678, 426, 426, 209, 209, 209, 209, 209, 209, 209, 679,
- 209, 209, 209, 209, 209, 176, 669, 427, 669, 209, 209, 209, 680, 176, 209, 209,
- 680, 209, 672, 676, 140, 140, 140, 140, 209, 209, 209, 209, 209, 323, 672, 426,
- 675, 209, 209, 681, 682, 669, 675, 675, 209, 683, 209, 209, 288, 140, 140, 192,
- 48, 48, 48, 48, 48, 48, 140, 140, 48, 48, 48, 207, 48, 48, 48, 48,
- 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 478, 48, 48, 48, 48, 48,
- 48, 48, 48, 48, 48, 48, 100, 48, 48, 48, 48, 48, 48, 204, 140, 140,
- 48, 204, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 71, 48, 48, 48,
- 48, 48, 48, 140, 140, 140, 140, 140, 684, 140, 570, 570, 570, 570, 570, 570,
+ 48, 48, 475, 192, 476, 9, 477, 11, 478, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 271, 479, 48, 48, 480, 481, 482, 140, 140, 483,
+ 48, 464, 484, 48, 62, 485, 140, 48, 486, 140, 140, 48, 487, 140, 48, 313,
+ 488, 48, 48, 489, 490, 457, 491, 492, 222, 48, 48, 493, 494, 48, 196, 192,
+ 495, 48, 496, 497, 498, 48, 48, 499, 222, 48, 48, 500, 501, 502, 503, 504,
+ 48, 97, 505, 506, 507, 140, 140, 140, 508, 509, 510, 48, 48, 511, 512, 192,
+ 513, 83, 84, 514, 515, 516, 517, 518, 519, 48, 48, 520, 521, 522, 523, 140,
+ 48, 48, 48, 524, 525, 526, 481, 140, 48, 48, 48, 527, 528, 192, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 529, 530, 531, 532, 140, 140,
+ 48, 48, 48, 533, 534, 192, 535, 140, 48, 48, 536, 537, 192, 538, 539, 140,
+ 48, 540, 541, 542, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 48, 505, 543, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 544,
+ 545, 546, 48, 547, 548, 192, 140, 140, 140, 140, 549, 48, 48, 550, 551, 140,
+ 552, 48, 48, 553, 554, 555, 48, 48, 556, 557, 558, 48, 48, 48, 48, 196,
+ 559, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 560, 192,
+ 84, 48, 529, 561, 562, 148, 175, 563, 48, 564, 565, 566, 140, 140, 140, 140,
+ 567, 48, 48, 568, 569, 192, 570, 48, 571, 572, 192, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 573,
+ 574, 115, 48, 575, 576, 577, 140, 140, 140, 140, 140, 100, 271, 578, 579, 580,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140,
+ 272, 272, 272, 272, 272, 272, 581, 582, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 388, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 583,
+ 48, 48, 48, 584, 585, 586, 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, 71,
+ 48, 48, 48, 48, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 587, 588, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 589,
+ 48, 48, 48, 590, 591, 592, 593, 594, 48, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 595, 48, 596, 192, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 9, 9, 11, 11, 271, 597, 140, 140, 140, 140, 140, 140,
+ 48, 48, 48, 48, 598, 599, 600, 600, 601, 602, 140, 140, 140, 140, 603, 604,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 440,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 199, 140, 605,
+ 196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 606,
+ 48, 48, 607, 608, 140, 609, 610, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 206,
+ 48, 48, 48, 48, 48, 48, 71, 151, 196, 611, 612, 140, 140, 140, 140, 140,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 192,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140, 140,
+ 32, 32, 613, 32, 614, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323,
+ 209, 209, 615, 209, 209, 209, 616, 617, 618, 209, 619, 209, 209, 209, 287, 140,
+ 209, 209, 209, 209, 620, 140, 140, 140, 140, 140, 140, 140, 271, 621, 271, 621,
+ 209, 209, 209, 209, 209, 338, 271, 461, 140, 140, 140, 140, 140, 140, 140, 140,
+ 9, 622, 11, 623, 624, 625, 241, 9, 626, 627, 628, 629, 630, 9, 622, 11,
+ 631, 632, 11, 633, 634, 635, 636, 9, 637, 11, 9, 622, 11, 623, 624, 11,
+ 241, 9, 626, 636, 9, 637, 11, 9, 622, 11, 638, 9, 639, 640, 641, 642,
+ 11, 643, 9, 644, 645, 646, 647, 11, 648, 9, 649, 11, 650, 538, 538, 538,
+ 32, 32, 32, 651, 32, 32, 652, 653, 654, 655, 45, 140, 140, 140, 140, 140,
+ 656, 657, 658, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 659, 660, 661, 27, 27, 27, 662, 140, 663, 140, 140, 140, 140, 140, 140, 140,
+ 48, 48, 151, 664, 665, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 666, 140, 48, 48, 667, 668,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 669, 192,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 587, 670,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 671, 200,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 672, 614, 140, 140,
+ 9, 9, 626, 11, 673, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 503, 271, 271, 674, 675, 140, 140, 140, 140,
+ 503, 271, 676, 677, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 678, 48, 679, 680, 681, 682, 683, 684, 685, 206, 686, 206, 140, 140, 140, 687,
+ 209, 209, 688, 209, 209, 209, 209, 209, 209, 322, 333, 689, 689, 689, 209, 323,
+ 690, 209, 209, 209, 209, 209, 209, 209, 209, 209, 691, 140, 140, 140, 692, 209,
+ 693, 209, 209, 688, 694, 695, 323, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 696,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 697, 426, 426,
+ 209, 209, 209, 209, 209, 209, 209, 698, 209, 209, 209, 209, 209, 176, 688, 427,
+ 688, 209, 209, 209, 699, 176, 209, 209, 699, 209, 691, 688, 695, 140, 140, 140,
+ 209, 209, 209, 209, 209, 322, 691, 426, 700, 209, 209, 209, 701, 702, 176, 694,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 703, 209, 209, 209, 209, 209, 192,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140,
+ 48, 48, 48, 207, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 100, 48,
+ 48, 48, 48, 48, 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 48, 48, 48, 71, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, 140, 140, 140,
+ 704, 140, 584, 584, 584, 584, 584, 584, 140, 140, 140, 140, 140, 140, 140, 140,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 140,
- 391, 391, 391, 391, 391, 391, 391, 685, 391, 391, 391, 391, 391, 391, 391, 686,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 705,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 706,
+ 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10,
+ 11, 11, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 57, 58, 59, 60, 60, 60, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 7, 4, 4, 4, 4, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 112, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 0,
+ 115, 116, 117, 118, 119, 120, 121, 122, 0, 123, 124, 125, 126, 126, 126, 127,
+ 128, 129, 130, 131, 132, 60, 133, 134, 135, 136, 0, 137, 138, 139, 0, 0,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 141, 142, 143, 143, 143, 143, 144, 11, 145, 146, 147, 4, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 166, 167,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 126, 126, 126, 126, 126, 169, 126, 170, 171, 172, 19, 173,
+ 19, 19, 19, 19, 174, 19, 175, 176, 177, 178, 19, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 168, 168, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 206, 206, 206, 207, 208, 209, 168,
+ 210, 211, 212, 213, 214, 168, 215, 216, 217, 218, 219, 220, 221, 222, 223, 168,
+ 224, 225, 226, 227, 228, 229, 230, 168, 168, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 168, 168, 258, 259, 260, 261, 262, 263, 264, 265, 168, 168,
+ 266, 168, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 168, 168, 278,
+ 279, 280, 281, 168, 282, 283, 284, 168, 168, 168, 168, 285, 286, 287, 288, 289,
+ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 168,
+ 290, 292, 290, 290, 290, 293, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 294, 295,
+ 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 297, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 301, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, 305, 306, 307, 308, 309, 168,
+ 168, 168, 168, 168, 168, 310, 168, 168, 168, 311, 312, 168, 313, 314, 315, 316,
+ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
+ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 318,
+ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 319, 319, 319, 319,
+ 319, 319, 319, 320, 321, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 322,
+ 323, 324, 324, 324, 325, 326, 327, 327, 327, 327, 327, 328, 168, 168, 168, 168,
+ 329, 330, 331, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 0, 0, 0, 332, 0, 0, 0, 0, 0, 0, 333, 168, 334, 335, 0, 336,
+ 0, 0, 0, 337, 338, 339, 340, 341, 189, 342, 168, 343, 0, 344, 168, 168,
+ 0, 345, 346, 347, 348, 349, 0, 0, 0, 0, 350, 0, 0, 0, 0, 351,
+ 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 353, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 354, 168, 168, 168,
+ 355, 356, 357, 168, 358, 359, 168, 168, 168, 168, 360, 361, 168, 168, 168, 168,
+ 168, 168, 168, 362, 168, 168, 168, 363, 168, 168, 168, 168, 168, 168, 168, 364,
+ 365, 365, 365, 366, 367, 368, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 369, 370, 168, 371, 168, 168, 168, 372, 373, 374, 375, 168, 168, 168, 168,
+ 376, 0, 377, 378, 0, 0, 379, 380, 381, 382, 168, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 0, 384, 0, 385,
+ 386, 387, 388, 389, 0, 0, 0, 0, 0, 390, 391, 392, 0, 0, 393, 332,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 394, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 395, 126, 126, 126,
+ 396, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 397, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 398,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 399, 168, 168, 168, 168, 168, 168,
+ 126, 126, 126, 126, 126, 126, 126, 126, 399, 168, 168, 168, 168, 168, 168, 168,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 400, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 401, 168,
+ 402, 0, 168, 168, 7, 7, 7, 403, 0, 1, 2, 3, 4, 4, 4, 4,
0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3,
0, 0, 0, 0, 0, 4, 0, 4, 2, 2, 5, 2, 2, 2, 5, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 7, 8, 0, 0,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11,
- 12, 13, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 16, 17, 14, 14,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 20, 21, 21, 21, 22, 20, 21, 21, 21, 21,
- 21, 23, 24, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 27, 28, 26,
- 29, 30, 31, 32, 31, 31, 31, 31, 33, 34, 35, 31, 31, 31, 36, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 29, 31, 31, 31, 31,
- 37, 38, 37, 37, 37, 37, 37, 37, 37, 39, 31, 31, 31, 31, 31, 31,
- 40, 40, 40, 40, 40, 40, 41, 26, 42, 42, 42, 42, 42, 42, 42, 43,
- 44, 44, 44, 44, 44, 45, 44, 46, 47, 47, 47, 48, 37, 49, 31, 31,
- 31, 50, 51, 31, 31, 31, 31, 31, 31, 31, 31, 31, 52, 31, 31, 31,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 53, 55, 53, 53, 53,
- 56, 57, 58, 59, 59, 60, 61, 62, 57, 63, 64, 65, 66, 59, 59, 67,
- 68, 69, 70, 71, 71, 72, 73, 74, 69, 75, 76, 77, 78, 71, 79, 26,
- 80, 81, 82, 83, 83, 84, 85, 86, 81, 87, 88, 26, 89, 83, 90, 91,
- 92, 93, 94, 95, 95, 96, 97, 98, 93, 99, 100, 101, 102, 95, 95, 26,
- 103, 104, 105, 106, 107, 104, 108, 109, 104, 105, 110, 26, 111, 108, 108, 112,
- 113, 114, 115, 113, 113, 115, 113, 116, 114, 117, 118, 119, 120, 113, 121, 113,
- 122, 123, 124, 122, 122, 124, 125, 126, 123, 127, 128, 128, 129, 122, 130, 26,
- 131, 132, 133, 131, 131, 131, 131, 131, 132, 133, 134, 131, 135, 131, 131, 131,
- 136, 137, 138, 139, 137, 137, 140, 141, 138, 142, 143, 137, 144, 137, 145, 26,
- 146, 147, 147, 147, 147, 147, 147, 148, 147, 147, 147, 149, 26, 26, 26, 26,
- 150, 151, 152, 152, 153, 152, 152, 154, 155, 156, 152, 157, 26, 26, 26, 26,
- 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, 158, 158, 158, 160, 159, 158,
- 158, 158, 158, 159, 158, 158, 158, 161, 158, 161, 162, 163, 26, 26, 26, 26,
- 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,
+ 0, 0, 0, 0, 7, 8, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 10, 11, 12, 13, 14, 14, 15, 14, 14, 14,
+ 14, 14, 14, 14, 16, 17, 14, 14, 18, 18, 18, 18, 18, 18, 18, 18,
+ 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 21,
+ 21, 21, 22, 20, 21, 21, 21, 21, 21, 23, 24, 25, 25, 25, 25, 25,
+ 25, 26, 25, 25, 25, 27, 28, 26, 29, 30, 31, 32, 31, 31, 31, 31,
+ 33, 34, 35, 31, 31, 31, 36, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 29, 31, 31, 31, 31, 37, 38, 37, 37, 37, 37, 37, 37,
+ 37, 39, 31, 31, 31, 31, 31, 31, 40, 40, 40, 40, 40, 40, 41, 26,
+ 42, 42, 42, 42, 42, 42, 42, 43, 44, 44, 44, 44, 44, 45, 44, 46,
+ 47, 47, 47, 48, 37, 49, 31, 31, 31, 50, 51, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 52, 31, 31, 31, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 54, 53, 55, 53, 53, 53, 56, 57, 58, 59, 59, 60, 61, 62,
+ 57, 63, 64, 65, 66, 59, 59, 67, 68, 69, 70, 71, 71, 72, 73, 74,
+ 69, 75, 76, 77, 78, 71, 79, 26, 80, 81, 82, 83, 83, 84, 85, 86,
+ 81, 87, 88, 26, 89, 83, 90, 91, 92, 93, 94, 95, 95, 96, 97, 98,
+ 93, 99, 100, 101, 102, 95, 95, 26, 103, 104, 105, 106, 107, 104, 108, 109,
+ 104, 105, 110, 26, 111, 108, 108, 112, 113, 114, 115, 113, 113, 115, 113, 116,
+ 114, 117, 118, 119, 120, 113, 121, 113, 122, 123, 124, 122, 122, 124, 125, 126,
+ 123, 127, 128, 128, 129, 122, 130, 26, 131, 132, 133, 131, 131, 131, 131, 131,
+ 132, 133, 134, 131, 135, 131, 131, 131, 136, 137, 138, 139, 137, 137, 140, 141,
+ 138, 142, 143, 137, 144, 137, 145, 26, 146, 147, 147, 147, 147, 147, 147, 148,
+ 147, 147, 147, 149, 26, 26, 26, 26, 150, 151, 152, 152, 153, 152, 152, 154,
+ 155, 156, 152, 157, 26, 26, 26, 26, 158, 158, 158, 158, 158, 158, 158, 158,
+ 158, 159, 158, 158, 158, 160, 159, 158, 158, 158, 158, 159, 158, 158, 158, 161,
+ 158, 161, 162, 163, 26, 26, 26, 26, 164, 164, 164, 164, 164, 164, 164, 164,
164, 164, 164, 164, 165, 165, 165, 165, 166, 167, 165, 165, 165, 165, 165, 168,
- 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
- 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 172, 171, 170, 170, 170, 170,
- 170, 171, 170, 170, 170, 170, 171, 172, 171, 170, 172, 170, 170, 170, 170, 170,
- 170, 170, 171, 170, 170, 170, 170, 170, 170, 170, 170, 173, 170, 170, 170, 174,
- 170, 170, 170, 175, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, 177,
- 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
+ 169, 169, 169, 169, 169, 169, 169, 169, 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 171, 172, 171, 170, 170, 170, 170, 170, 171, 170, 170, 170, 170, 171, 172,
+ 171, 170, 172, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 170, 170, 170,
+ 170, 170, 170, 173, 170, 170, 170, 174, 170, 170, 170, 175, 176, 176, 176, 176,
+ 176, 176, 176, 176, 176, 176, 177, 177, 178, 178, 178, 178, 178, 178, 178, 178,
179, 179, 179, 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, 181, 183,
184, 184, 185, 186, 187, 187, 188, 26, 189, 189, 190, 26, 191, 192, 193, 26,
194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 195, 194, 196, 194, 196,
@@ -2368,208 +2467,164 @@ _hb_ucd_u16[9344] =
210, 210, 210, 210, 210, 211, 210, 210, 210, 212, 210, 213, 194, 194, 194, 194,
214, 214, 214, 215, 216, 216, 216, 216, 216, 216, 216, 217, 216, 216, 216, 218,
216, 219, 216, 219, 216, 220, 9, 9, 9, 221, 26, 26, 26, 26, 26, 26,
- 222, 222, 222, 222, 222, 222, 222, 222, 222, 223, 222, 222, 222, 222, 222, 224,
- 225, 225, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 227, 228,
- 229, 229, 229, 229, 229, 229, 229, 230, 229, 231, 232, 232, 232, 232, 232, 232,
- 18, 233, 165, 165, 165, 165, 165, 234, 225, 26, 235, 9, 236, 237, 238, 239,
- 2, 2, 2, 2, 240, 241, 2, 2, 2, 2, 2, 242, 243, 244, 2, 245,
- 2, 2, 2, 2, 2, 2, 2, 246, 9, 9, 9, 9, 9, 9, 9, 9,
- 14, 14, 247, 247, 14, 14, 14, 14, 247, 247, 14, 248, 14, 14, 14, 247,
- 14, 14, 14, 14, 14, 14, 249, 14, 249, 14, 250, 251, 14, 14, 252, 253,
- 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 256, 257,
- 0, 258, 2, 259, 0, 0, 0, 0, 260, 26, 9, 9, 9, 9, 261, 26,
- 0, 0, 0, 0, 262, 263, 4, 0, 0, 264, 0, 0, 2, 2, 2, 2,
- 2, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 258, 26, 26, 26, 0, 266, 26, 26, 0, 0, 0, 0,
- 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0,
- 0, 0, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 2, 2, 2, 2,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 271, 272,
- 165, 165, 165, 165, 166, 167, 273, 273, 273, 273, 273, 273, 273, 274, 275, 274,
- 170, 170, 172, 26, 172, 172, 172, 172, 172, 172, 172, 172, 18, 18, 18, 18,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 26, 26, 26, 26,
+ 222, 222, 222, 222, 222, 222, 222, 222, 222, 223, 222, 222, 222, 222, 222, 222,
+ 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225, 225, 225, 226, 227,
+ 228, 228, 228, 228, 228, 228, 228, 229, 228, 230, 231, 231, 231, 231, 231, 231,
+ 18, 232, 165, 165, 165, 165, 165, 233, 224, 26, 234, 9, 235, 236, 237, 238,
+ 2, 2, 2, 2, 239, 240, 2, 2, 2, 2, 2, 241, 242, 243, 2, 244,
+ 2, 2, 2, 2, 2, 2, 2, 245, 14, 14, 246, 246, 14, 14, 14, 14,
+ 246, 246, 14, 247, 14, 14, 14, 246, 14, 14, 14, 14, 14, 14, 248, 14,
+ 248, 14, 249, 250, 14, 14, 251, 252, 0, 253, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 254, 0, 255, 256, 0, 257, 2, 258, 0, 0, 0, 0,
+ 259, 26, 9, 9, 9, 9, 260, 26, 0, 0, 0, 0, 261, 262, 4, 0,
+ 0, 263, 0, 0, 2, 2, 2, 2, 2, 264, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 265, 26, 26, 0, 266, 26, 26, 0, 0, 0, 0,
+ 267, 267, 267, 267, 267, 267, 267, 267, 0, 0, 0, 0, 0, 0, 268, 0,
+ 0, 0, 269, 0, 0, 0, 0, 0, 270, 270, 270, 270, 270, 270, 270, 270,
+ 270, 270, 270, 270, 2, 2, 2, 2, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 271, 272, 165, 165, 165, 165, 166, 167, 273, 273,
+ 273, 273, 273, 273, 273, 274, 275, 274, 170, 170, 172, 26, 172, 172, 172, 172,
+ 172, 172, 172, 172, 18, 18, 18, 18, 0, 0, 0, 276, 26, 26, 26, 26,
277, 277, 277, 278, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 279, 26,
- 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 280, 26, 26, 26, 0, 0,
281, 0, 0, 0, 282, 283, 0, 284, 285, 286, 286, 286, 286, 286, 286, 286,
286, 286, 287, 288, 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291,
- 292, 293, 293, 293, 293, 293, 294, 169, 169, 169, 169, 169, 169, 169, 169, 169,
- 169, 295, 0, 0, 293, 293, 293, 293, 0, 0, 0, 0, 296, 297, 290, 290,
- 169, 169, 169, 295, 0, 0, 0, 0, 0, 0, 0, 0, 169, 169, 169, 298,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 290, 290, 290, 290, 299,
+ 292, 293, 293, 293, 293, 293, 294, 169, 169, 295, 0, 0, 293, 293, 293, 293,
+ 0, 0, 0, 0, 276, 296, 290, 290, 169, 169, 169, 295, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 169, 169, 297, 0, 0, 290, 290, 290, 290, 290, 298,
290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 0, 0, 0, 0, 0,
- 277, 277, 277, 277, 277, 277, 277, 277, 0, 0, 0, 0, 0, 0, 0, 0,
- 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
- 300, 301, 300, 300, 300, 300, 300, 300, 302, 26, 303, 303, 303, 303, 303, 303,
- 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304,
- 304, 304, 304, 304, 304, 305, 26, 26, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 26,
- 0, 0, 0, 0, 307, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 308, 2, 2, 2, 2, 2, 2, 2, 309, 310, 311, 26, 26, 312, 2,
- 313, 313, 313, 313, 313, 314, 0, 315, 316, 316, 316, 316, 316, 316, 316, 26,
- 317, 317, 317, 317, 317, 317, 317, 317, 318, 319, 317, 320, 53, 53, 53, 53,
- 321, 321, 321, 321, 321, 322, 323, 323, 323, 323, 324, 325, 169, 169, 169, 326,
- 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 329, 164, 164, 164, 330,
- 331, 331, 331, 331, 331, 331, 332, 26, 331, 333, 331, 334, 164, 164, 164, 164,
- 335, 335, 335, 335, 335, 335, 335, 335, 336, 26, 26, 337, 338, 338, 339, 26,
- 340, 340, 340, 26, 172, 172, 2, 2, 2, 2, 2, 341, 342, 343, 176, 176,
- 176, 176, 176, 176, 176, 176, 176, 176, 338, 338, 338, 338, 338, 344, 338, 345,
- 169, 169, 169, 169, 346, 26, 169, 169, 295, 347, 169, 169, 169, 169, 169, 346,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 280, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 348, 26, 26, 26, 26,
- 349, 26, 350, 351, 25, 25, 352, 353, 354, 25, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 355, 26, 356, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 357, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 358, 31, 31, 31, 31, 31, 31, 359, 26, 26, 26, 26, 31, 31,
- 9, 9, 0, 315, 9, 360, 0, 0, 0, 0, 361, 0, 258, 296, 362, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 363,
- 364, 0, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3, 365, 290, 289, 290,
- 290, 290, 290, 366, 169, 169, 169, 295, 367, 367, 367, 368, 258, 258, 26, 369,
- 370, 371, 370, 370, 372, 370, 370, 373, 370, 374, 370, 374, 26, 26, 26, 26,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375,
- 376, 0, 0, 0, 0, 0, 377, 0, 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 253, 0, 378, 379, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 380,
- 381, 381, 381, 382, 383, 383, 383, 383, 383, 383, 384, 26, 385, 0, 0, 296,
- 386, 386, 386, 386, 387, 388, 389, 389, 389, 390, 391, 391, 391, 391, 391, 392,
- 393, 393, 393, 394, 395, 395, 395, 395, 396, 395, 397, 26, 26, 26, 26, 26,
- 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 399, 399, 399, 399, 399, 399,
- 400, 400, 400, 401, 400, 402, 403, 403, 403, 403, 404, 403, 403, 403, 403, 404,
- 405, 405, 405, 405, 405, 26, 406, 406, 406, 406, 406, 406, 407, 408, 409, 410,
- 409, 410, 411, 409, 412, 409, 412, 413, 26, 26, 26, 26, 26, 26, 26, 26,
- 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
- 414, 414, 414, 414, 414, 414, 415, 26, 414, 414, 416, 26, 414, 26, 26, 26,
- 417, 2, 2, 2, 2, 2, 418, 309, 26, 26, 26, 26, 26, 26, 26, 26,
- 419, 420, 421, 421, 421, 421, 422, 423, 424, 424, 425, 424, 426, 426, 426, 426,
- 427, 427, 427, 428, 429, 427, 26, 26, 26, 26, 26, 26, 430, 430, 431, 432,
- 433, 433, 433, 434, 435, 435, 435, 436, 26, 26, 26, 26, 26, 26, 26, 26,
- 437, 437, 437, 437, 438, 438, 438, 439, 438, 438, 440, 438, 438, 438, 438, 438,
- 441, 442, 443, 444, 445, 445, 446, 447, 445, 448, 445, 448, 449, 449, 449, 449,
- 450, 450, 450, 450, 26, 26, 26, 26, 451, 451, 451, 451, 452, 453, 452, 26,
- 454, 454, 454, 454, 454, 454, 455, 456, 457, 457, 458, 457, 459, 459, 460, 459,
- 461, 461, 462, 463, 26, 464, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 465, 465, 465, 465, 465, 465, 465, 465, 465, 466, 26, 26, 26, 26, 26, 26,
- 467, 467, 467, 467, 467, 467, 468, 26, 467, 467, 467, 467, 467, 467, 468, 469,
- 470, 470, 470, 470, 470, 26, 470, 471, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 31, 31, 31, 50,
- 472, 472, 472, 472, 472, 473, 474, 26, 26, 26, 26, 26, 26, 26, 26, 475,
- 476, 476, 476, 476, 476, 26, 477, 477, 477, 477, 477, 478, 26, 26, 479, 479,
- 479, 480, 26, 26, 26, 26, 481, 481, 481, 482, 26, 26, 483, 483, 484, 26,
- 485, 485, 485, 485, 485, 485, 485, 485, 485, 486, 487, 485, 485, 485, 486, 488,
- 489, 489, 489, 489, 489, 489, 489, 489, 490, 491, 492, 492, 492, 493, 492, 494,
- 495, 495, 495, 495, 495, 495, 496, 495, 495, 26, 497, 497, 497, 497, 498, 26,
- 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 500, 137, 501, 26,
- 502, 502, 503, 502, 502, 502, 502, 502, 504, 26, 26, 26, 26, 26, 26, 26,
- 505, 506, 507, 508, 507, 509, 510, 510, 510, 510, 510, 510, 510, 511, 510, 512,
- 513, 514, 515, 516, 516, 517, 518, 519, 514, 520, 521, 522, 523, 524, 524, 26,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 526, 527, 26, 26, 26,
- 528, 528, 528, 528, 528, 528, 528, 528, 528, 26, 528, 529, 26, 26, 26, 26,
- 530, 530, 530, 530, 530, 530, 531, 530, 530, 530, 530, 531, 26, 26, 26, 26,
- 532, 532, 532, 532, 532, 532, 532, 532, 533, 26, 532, 534, 198, 535, 26, 26,
- 536, 536, 536, 536, 536, 536, 536, 537, 536, 537, 26, 26, 26, 26, 26, 26,
- 538, 538, 538, 539, 538, 540, 538, 538, 541, 26, 26, 26, 26, 26, 26, 26,
- 542, 542, 542, 542, 542, 542, 542, 543, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 26, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 545, 546,
- 547, 548, 549, 550, 550, 550, 551, 552, 547, 26, 550, 553, 26, 26, 26, 26,
- 26, 26, 26, 26, 554, 555, 554, 554, 554, 554, 554, 555, 556, 26, 26, 26,
- 557, 557, 557, 557, 557, 557, 557, 557, 557, 26, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 559, 26, 178, 178, 560, 560, 560, 560, 560, 560, 560, 561,
- 53, 562, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 563, 564, 563, 563, 563, 563, 565, 563, 566, 26, 563, 563, 563, 567, 568, 568,
- 568, 568, 569, 568, 568, 570, 571, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 572, 573, 574, 574, 574, 574, 572, 575, 574, 26, 574, 576, 577, 578, 579, 579,
- 579, 580, 581, 582, 579, 583, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 584, 584, 584, 585,
- 586, 586, 587, 586, 586, 586, 586, 588, 586, 586, 586, 589, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 26, 590, 26, 108, 108, 108, 108, 108, 108, 591, 592,
- 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593,
- 593, 593, 593, 594, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 595, 596, 26,
- 593, 593, 593, 593, 593, 593, 593, 593, 597, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 599, 26,
- 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
- 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 601, 26, 26, 26, 26, 26,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 603, 26, 26, 26, 26, 26, 26, 26,
- 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
- 306, 306, 306, 306, 306, 306, 306, 604, 605, 605, 605, 606, 605, 607, 608, 608,
- 608, 608, 608, 608, 608, 608, 608, 609, 608, 610, 611, 611, 611, 612, 612, 26,
- 613, 613, 613, 613, 613, 613, 613, 613, 614, 26, 613, 615, 615, 613, 613, 616,
- 613, 613, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 26, 617, 617, 617, 617, 617, 617, 617, 617,
- 617, 617, 617, 618, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 619, 619, 619, 619, 619, 619, 619, 619, 619, 620, 619, 619, 619, 619, 619, 619,
- 619, 621, 619, 619, 26, 26, 26, 26, 26, 26, 26, 26, 622, 26, 348, 26,
- 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623,
- 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 26,
- 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624,
- 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 625, 26, 26, 26, 26, 26,
- 623, 626, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 627, 628,
- 629, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
- 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
- 286, 286, 286, 286, 630, 26, 631, 26, 26, 26, 632, 26, 633, 26, 634, 634,
- 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634,
- 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 635,
- 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 637, 636, 638,
- 636, 639, 636, 640, 296, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 9, 9, 9, 9, 9, 641, 9, 9, 221, 26, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 296, 26, 26, 26, 26, 26, 26, 26,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 26,
- 0, 0, 0, 0, 258, 364, 0, 0, 0, 0, 0, 0, 642, 643, 0, 644,
- 645, 646, 0, 0, 0, 647, 0, 0, 0, 0, 0, 0, 0, 266, 26, 26,
- 14, 14, 14, 14, 14, 14, 14, 14, 247, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 296, 26, 0, 0, 296, 26,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 26, 0, 0, 0, 260,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0,
- 0, 0, 0, 255, 648, 649, 0, 650, 651, 0, 0, 0, 0, 0, 0, 0,
- 269, 652, 255, 255, 0, 0, 0, 653, 654, 655, 656, 0, 0, 0, 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, 268, 0, 0, 0, 0, 0, 0,
- 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657,
- 657, 658, 26, 659, 660, 657, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 2, 2, 2, 349, 661, 309, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 662, 270, 270, 663, 664, 665, 18, 18, 18, 18, 18, 18, 18, 666, 26, 26,
- 26, 667, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 668, 668, 668, 668, 668, 669, 668, 670, 668, 671, 26, 26, 26, 26, 26, 26,
- 26, 26, 672, 672, 672, 673, 26, 26, 674, 674, 674, 674, 674, 674, 674, 675,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 676, 676, 676, 676, 676, 677,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 172, 678, 170, 172,
- 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679,
- 679, 679, 679, 679, 679, 679, 679, 679, 680, 679, 681, 26, 26, 26, 26, 26,
- 682, 682, 682, 682, 682, 682, 682, 682, 682, 683, 682, 684, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 364, 0,
- 0, 0, 0, 0, 0, 0, 378, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 364, 0, 0, 0, 0, 0, 0, 276, 26, 26, 26, 26, 26, 26, 26, 26,
- 685, 31, 31, 31, 686, 687, 688, 689, 690, 691, 686, 692, 686, 688, 688, 693,
- 31, 694, 31, 695, 696, 694, 31, 695, 26, 26, 26, 26, 26, 26, 51, 26,
- 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 296, 26, 0, 258, 364, 0, 364, 0, 364, 0, 0, 0, 276, 26,
- 0, 0, 0, 0, 0, 276, 26, 26, 26, 26, 26, 26, 697, 0, 0, 0,
- 698, 26, 0, 0, 0, 0, 0, 296, 0, 260, 315, 26, 276, 26, 26, 26,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 699, 0, 378, 0, 378,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 700,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 315, 0, 296, 260, 26,
- 0, 296, 0, 0, 0, 0, 0, 0, 0, 26, 0, 315, 0, 0, 0, 0,
- 0, 26, 0, 0, 0, 276, 315, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 26, 0, 276, 0, 378,
- 0, 260, 0, 0, 0, 0, 0, 269, 276, 697, 0, 296, 0, 260, 0, 260,
- 0, 0, 361, 0, 0, 0, 0, 0, 0, 266, 26, 26, 26, 26, 0, 315,
- 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 26, 26, 26, 26,
- 277, 277, 277, 277, 277, 277, 277, 348, 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 280, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 348, 26, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 701, 26, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 280, 26, 26, 26, 26,
- 277, 277, 277, 280, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 277, 277, 277, 277, 277, 277, 277, 277, 277, 702, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 703, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, 299, 299, 299, 299, 299, 299,
+ 301, 26, 302, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, 303,
+ 303, 303, 303, 303, 303, 304, 26, 26, 18, 18, 18, 18, 305, 305, 305, 305,
+ 305, 305, 305, 305, 305, 305, 305, 26, 0, 0, 0, 0, 306, 2, 2, 2,
+ 2, 307, 2, 2, 2, 2, 2, 2, 2, 308, 309, 258, 26, 26, 310, 2,
+ 311, 311, 311, 311, 311, 312, 0, 265, 313, 313, 313, 313, 313, 313, 313, 26,
+ 314, 314, 314, 314, 314, 314, 314, 314, 315, 316, 314, 317, 53, 53, 53, 53,
+ 318, 318, 318, 318, 318, 319, 320, 320, 320, 320, 321, 322, 169, 169, 169, 323,
+ 324, 324, 324, 324, 324, 324, 324, 324, 324, 325, 324, 326, 164, 164, 164, 327,
+ 328, 328, 328, 328, 328, 328, 329, 26, 328, 330, 328, 331, 164, 164, 164, 164,
+ 332, 332, 332, 332, 332, 332, 332, 332, 333, 26, 26, 334, 335, 335, 336, 26,
+ 337, 337, 337, 26, 172, 172, 2, 2, 2, 2, 2, 338, 339, 340, 176, 176,
+ 176, 176, 176, 176, 176, 176, 176, 176, 335, 335, 335, 335, 335, 341, 335, 342,
+ 169, 169, 169, 169, 343, 26, 169, 169, 295, 344, 169, 169, 169, 169, 169, 343,
+ 26, 26, 26, 26, 26, 26, 26, 26, 277, 277, 277, 277, 277, 280, 277, 277,
+ 277, 277, 277, 345, 26, 26, 26, 26, 346, 26, 347, 348, 25, 25, 349, 350,
+ 351, 25, 31, 31, 31, 31, 31, 31, 352, 26, 353, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 354, 31, 31, 355, 31, 31, 31, 31, 31,
+ 31, 356, 26, 26, 26, 26, 31, 31, 9, 9, 0, 265, 9, 357, 0, 0,
+ 0, 0, 358, 0, 257, 359, 360, 31, 31, 31, 31, 31, 31, 31, 31, 361,
+ 362, 0, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3, 363, 290, 289, 290,
+ 290, 290, 290, 364, 169, 169, 169, 295, 365, 365, 365, 366, 257, 257, 26, 367,
+ 368, 369, 368, 368, 370, 368, 368, 371, 368, 372, 368, 372, 26, 26, 26, 26,
+ 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 373,
+ 374, 0, 0, 0, 0, 0, 375, 0, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 252, 0, 376, 377, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 378,
+ 379, 379, 379, 380, 381, 381, 381, 381, 381, 381, 382, 26, 383, 0, 0, 359,
+ 384, 384, 384, 384, 385, 386, 387, 387, 387, 388, 389, 389, 389, 389, 389, 390,
+ 391, 391, 391, 392, 393, 393, 393, 393, 394, 393, 395, 26, 26, 26, 26, 26,
+ 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 397, 397, 397, 397, 397, 397,
+ 398, 398, 398, 399, 398, 400, 401, 401, 401, 401, 402, 401, 401, 401, 401, 402,
+ 403, 403, 403, 403, 403, 26, 404, 404, 404, 404, 404, 404, 405, 406, 407, 408,
+ 407, 408, 409, 407, 410, 407, 410, 411, 412, 412, 412, 412, 412, 412, 413, 26,
+ 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 415, 26,
+ 414, 414, 416, 26, 414, 26, 26, 26, 417, 2, 2, 2, 2, 2, 418, 419,
+ 420, 421, 422, 422, 422, 422, 423, 424, 425, 425, 426, 425, 427, 427, 427, 427,
+ 428, 428, 428, 429, 430, 428, 26, 26, 26, 26, 26, 26, 431, 431, 432, 433,
+ 434, 434, 434, 435, 436, 436, 436, 437, 438, 438, 438, 438, 439, 439, 439, 440,
+ 439, 439, 441, 439, 439, 439, 439, 439, 442, 443, 444, 445, 446, 446, 447, 448,
+ 446, 449, 446, 449, 450, 450, 450, 450, 451, 451, 451, 451, 26, 26, 26, 26,
+ 452, 452, 452, 452, 453, 454, 453, 26, 455, 455, 455, 455, 455, 455, 456, 457,
+ 458, 458, 459, 458, 460, 460, 461, 460, 462, 462, 463, 464, 26, 465, 26, 26,
+ 466, 466, 466, 466, 466, 466, 466, 466, 466, 467, 26, 26, 26, 26, 26, 26,
+ 468, 468, 468, 468, 468, 468, 469, 26, 468, 468, 468, 468, 468, 468, 469, 470,
+ 471, 471, 471, 471, 471, 26, 471, 472, 473, 473, 473, 473, 474, 475, 473, 473,
+ 474, 476, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 31, 31, 31, 50,
+ 477, 477, 477, 477, 477, 478, 479, 26, 480, 26, 26, 26, 26, 26, 26, 481,
+ 482, 482, 482, 482, 482, 26, 483, 483, 483, 483, 483, 484, 26, 26, 485, 485,
+ 485, 486, 26, 26, 26, 26, 487, 487, 487, 488, 26, 26, 489, 489, 490, 26,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 492, 493, 491, 491, 491, 492, 494,
+ 495, 495, 495, 495, 495, 495, 495, 495, 496, 497, 498, 498, 498, 499, 498, 500,
+ 501, 501, 501, 501, 501, 501, 502, 501, 501, 26, 503, 503, 503, 503, 504, 26,
+ 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 506, 137, 507, 26,
+ 508, 508, 509, 508, 508, 508, 508, 508, 510, 26, 26, 26, 26, 26, 26, 26,
+ 511, 512, 513, 514, 513, 515, 516, 516, 516, 516, 516, 516, 516, 517, 516, 518,
+ 519, 520, 521, 522, 522, 523, 524, 525, 520, 526, 527, 528, 529, 530, 530, 26,
+ 531, 532, 531, 531, 531, 531, 533, 531, 534, 535, 533, 536, 537, 26, 26, 26,
+ 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 539, 540, 26, 26, 26,
+ 541, 541, 541, 541, 541, 541, 541, 541, 541, 26, 541, 542, 26, 26, 26, 26,
+ 543, 543, 543, 543, 543, 543, 544, 543, 543, 543, 543, 544, 26, 26, 26, 26,
+ 545, 545, 545, 545, 545, 545, 545, 545, 546, 26, 545, 547, 198, 548, 26, 26,
+ 549, 549, 549, 549, 549, 549, 549, 550, 549, 550, 164, 164, 551, 26, 26, 26,
+ 552, 552, 552, 553, 552, 554, 552, 552, 555, 26, 26, 26, 26, 26, 26, 26,
+ 556, 556, 556, 556, 556, 556, 556, 557, 26, 26, 26, 26, 558, 558, 558, 558,
+ 558, 558, 558, 558, 558, 558, 559, 560, 561, 562, 563, 564, 564, 564, 565, 566,
+ 561, 26, 564, 567, 26, 26, 26, 26, 26, 26, 26, 26, 568, 569, 568, 568,
+ 568, 568, 568, 569, 570, 26, 26, 26, 571, 571, 571, 571, 571, 571, 571, 571,
+ 571, 26, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 573, 26, 178, 178,
+ 574, 574, 574, 574, 574, 574, 574, 575, 53, 576, 26, 26, 26, 26, 26, 26,
+ 577, 577, 577, 577, 578, 26, 577, 578, 579, 580, 579, 579, 579, 579, 581, 579,
+ 582, 26, 579, 579, 579, 583, 584, 584, 584, 584, 585, 584, 584, 586, 587, 26,
+ 588, 589, 590, 590, 590, 590, 588, 591, 590, 26, 590, 592, 593, 594, 595, 595,
+ 595, 596, 597, 598, 595, 599, 26, 26, 26, 26, 26, 26, 600, 600, 600, 601,
+ 602, 602, 603, 602, 602, 602, 602, 604, 602, 602, 602, 605, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 606, 26, 108, 108, 108, 108, 108, 108, 607, 608,
+ 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 610, 26, 26, 26, 26,
+ 609, 609, 609, 609, 609, 611, 612, 26, 613, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 615, 26,
+ 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 617, 26, 616, 616, 616, 616,
+ 616, 616, 616, 616, 616, 616, 616, 618, 619, 619, 619, 619, 619, 619, 619, 619,
+ 620, 26, 26, 26, 26, 26, 26, 26, 621, 621, 621, 621, 621, 621, 621, 622,
+ 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 623,
+ 624, 624, 624, 625, 624, 626, 627, 627, 627, 627, 627, 627, 627, 627, 627, 628,
+ 627, 629, 630, 630, 630, 631, 631, 26, 632, 632, 632, 632, 632, 632, 632, 632,
+ 633, 26, 632, 634, 634, 632, 632, 635, 632, 632, 26, 26, 26, 26, 26, 26,
+ 636, 636, 636, 636, 636, 636, 636, 637, 638, 638, 638, 638, 638, 638, 638, 638,
+ 638, 638, 638, 639, 26, 26, 26, 26, 640, 640, 640, 640, 640, 640, 640, 640,
+ 640, 641, 640, 640, 640, 640, 640, 640, 640, 642, 640, 640, 26, 26, 26, 26,
+ 26, 26, 26, 26, 643, 26, 345, 26, 644, 644, 644, 644, 644, 644, 644, 644,
+ 644, 644, 644, 644, 644, 644, 644, 26, 645, 645, 645, 645, 645, 645, 645, 645,
+ 645, 645, 646, 26, 26, 26, 26, 647, 644, 648, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 649, 650, 651, 286, 286, 286, 286, 286, 286, 286,
+ 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 652, 26, 653, 26,
+ 26, 26, 654, 26, 655, 26, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656,
+ 656, 656, 656, 656, 656, 656, 656, 657, 658, 658, 658, 658, 658, 658, 658, 658,
+ 658, 658, 658, 658, 658, 659, 658, 660, 658, 661, 658, 662, 359, 26, 26, 26,
+ 0, 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 359, 26,
+ 9, 9, 9, 9, 9, 663, 9, 9, 221, 26, 0, 0, 0, 0, 0, 0,
+ 359, 26, 26, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 276, 26,
+ 0, 0, 0, 0, 257, 362, 0, 0, 0, 0, 0, 0, 664, 665, 0, 666,
+ 667, 668, 0, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 266, 26, 26,
+ 246, 26, 26, 26, 26, 26, 26, 26, 0, 0, 359, 26, 0, 0, 359, 26,
+ 0, 0, 257, 26, 0, 0, 0, 259, 0, 0, 254, 0, 0, 0, 0, 0,
+ 0, 0, 0, 254, 670, 671, 0, 672, 673, 0, 0, 0, 0, 0, 0, 0,
+ 269, 674, 254, 254, 0, 0, 0, 675, 676, 677, 678, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 276, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0,
+ 679, 679, 679, 679, 679, 679, 679, 679, 679, 680, 26, 681, 682, 679, 26, 26,
+ 2, 2, 2, 346, 683, 419, 26, 26, 684, 270, 270, 685, 686, 687, 18, 18,
+ 18, 18, 18, 18, 18, 688, 26, 26, 26, 689, 26, 26, 26, 26, 26, 26,
+ 690, 690, 690, 690, 690, 691, 690, 692, 690, 693, 26, 26, 26, 26, 26, 26,
+ 26, 26, 694, 694, 694, 695, 26, 26, 696, 696, 696, 696, 696, 696, 696, 697,
+ 26, 26, 698, 698, 698, 698, 698, 699, 26, 26, 700, 700, 700, 700, 700, 701,
+ 26, 26, 26, 26, 172, 702, 170, 172, 703, 703, 703, 703, 703, 703, 703, 703,
+ 704, 703, 705, 26, 26, 26, 26, 26, 706, 706, 706, 706, 706, 706, 706, 706,
+ 706, 707, 706, 708, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 362, 0,
+ 0, 0, 0, 0, 0, 0, 376, 26, 362, 0, 0, 0, 0, 0, 0, 276,
+ 709, 31, 31, 31, 710, 711, 712, 713, 714, 715, 710, 716, 710, 712, 712, 717,
+ 31, 718, 31, 719, 720, 718, 31, 719, 26, 26, 26, 26, 26, 26, 721, 26,
+ 0, 0, 0, 0, 0, 359, 0, 0, 0, 0, 359, 26, 0, 257, 362, 0,
+ 362, 0, 362, 0, 0, 0, 276, 26, 0, 0, 0, 0, 0, 276, 26, 26,
+ 26, 26, 26, 26, 722, 0, 0, 0, 723, 26, 0, 0, 0, 0, 0, 359,
+ 0, 259, 265, 26, 276, 26, 26, 26, 0, 0, 0, 724, 0, 376, 0, 376,
+ 0, 0, 0, 0, 0, 0, 257, 725, 0, 0, 0, 265, 0, 359, 259, 26,
+ 0, 359, 0, 0, 0, 0, 0, 0, 0, 26, 0, 265, 0, 0, 0, 0,
+ 0, 26, 0, 0, 0, 276, 0, 359, 265, 26, 26, 26, 26, 26, 26, 26,
+ 0, 0, 359, 26, 0, 276, 0, 376, 0, 726, 0, 0, 0, 0, 0, 0,
+ 257, 722, 0, 727, 0, 265, 0, 259, 0, 0, 358, 0, 0, 0, 0, 0,
+ 277, 277, 277, 277, 26, 26, 26, 26, 277, 277, 277, 277, 277, 277, 277, 345,
+ 277, 277, 277, 280, 277, 277, 277, 277, 277, 277, 277, 277, 345, 26, 277, 277,
+ 277, 277, 277, 277, 728, 26, 277, 277, 277, 277, 277, 280, 26, 26, 26, 26,
+ 277, 729, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 26, 26,
+ 730, 26, 26, 26, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
939, 940, 941, 942, 946, 948, 0, 962, 969, 970, 971, 976,1001,1002,1003,1008,
0,1033,1040,1041,1042,1043,1047, 0, 0,1080,1081,1082,1086,1110, 0, 0,
@@ -2732,17 +2787,24 @@ _hb_ucd_u16[9344] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1602,1603,1934,1935,1574,1575,
1576,1577,1579,1580,1581,1583,1584, 0,1585,1587,1588,1589,1591, 0,1592, 0,
1593,1594, 0,1595,1596, 0,1598,1599,1600,1601,1604,1582,1578,1590,1597, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1936, 0,1937, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1938, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1939,1940,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1941,1942, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1944,1943, 0,1945, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1946,1947, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,1948, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1949,1950,
- 1951,1952,1953,1954,1955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1956,1957,1958,1960,1959,
- 1961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,1936, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,1937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1938, 0,1939, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1940, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1941,1942,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1943,1944, 0, 0, 0,
+ 0, 0, 0,1945, 0,1946, 0, 0, 0, 0, 0, 0, 0, 0,1947, 0,
+ 0,1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,1950, 0,1949,1951, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1953,1952, 0,1954, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1955,1956, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,1957, 0, 0, 0, 0, 0, 0, 0,
+ 0,1958,1961,1959,1965,1960,1962,1964,1963, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,1967,1966,1968, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1969,1970,
+ 1971,1972,1973,1974,1975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1976,1977,1978,1980,1979,
+ 1981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
106, 104, 107, 826, 114, 118, 119, 121, 123, 124, 127, 125, 34, 830, 130, 131,
132, 137, 827, 35, 133, 139, 829, 142, 143, 112, 144, 145, 924, 151, 152, 37,
157, 158, 159, 160, 38, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179,
@@ -2799,12 +2861,12 @@ _hb_ucd_i16[196] =
static inline uint_fast8_t
_hb_ucd_gc (unsigned u)
{
- return u<1114110u?_hb_ucd_u8[6808+(((_hb_ucd_u8[1312+(((_hb_ucd_u16[((_hb_ucd_u8[544+(((_hb_ucd_u8[u>>1>>3>>3>>4])<<4)+((u>>1>>3>>3)&15u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2;
+ return u<1114110u?_hb_ucd_u8[6472+(((_hb_ucd_u8[816+(((_hb_ucd_u16[((_hb_ucd_u8[272+(((_hb_ucd_u8[u>>1>>3>>4>>4])<<4)+((u>>1>>3>>4)&15u))])<<4)+((u>>1>>3)&15u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2;
}
static inline uint_fast8_t
_hb_ucd_ccc (unsigned u)
{
- return u<125259u?_hb_ucd_u8[8800+(((_hb_ucd_u8[8244+(((_hb_ucd_u8[7784+(((_hb_ucd_u8[7432+(((_hb_ucd_u8[7186+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0;
+ return u<125259u?_hb_ucd_u8[8504+(((_hb_ucd_u8[7936+(((_hb_ucd_u8[7460+(((_hb_ucd_u8[7100+(((_hb_ucd_u8[6854+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0;
}
static inline unsigned
_hb_ucd_b4 (const uint8_t* a, unsigned i)
@@ -2814,107 +2876,76 @@ _hb_ucd_b4 (const uint8_t* a, unsigned i)
static inline int_fast16_t
_hb_ucd_bmg (unsigned u)
{
- return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[9548+(((_hb_ucd_u8[9428+(((_hb_ucd_b4(9300+_hb_ucd_u8,u>>2>>3>>3))<<3)+((u>>2>>3)&7u))])<<3)+((u>>2)&7u))])<<2)+((u)&3u)]:0;
+ return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[9252+(((_hb_ucd_u8[9132+(((_hb_ucd_b4(9004+_hb_ucd_u8,u>>2>>3>>3))<<3)+((u>>2>>3)&7u))])<<3)+((u>>2)&7u))])<<2)+((u)&3u)]:0;
}
static inline uint_fast8_t
_hb_ucd_sc (unsigned u)
{
- return u<918000u?_hb_ucd_u8[11070+(((_hb_ucd_u16[2048+(((_hb_ucd_u8[10334+(((_hb_ucd_u8[9884+(u>>3>>4>>4)])<<4)+((u>>3>>4)&15u))])<<4)+((u>>3)&15u))])<<3)+((u)&7u))]:2;
+ return u<918000u?_hb_ucd_u8[10486+(((_hb_ucd_u16[3744+(((_hb_ucd_u16[2624+(((_hb_ucd_u8[9588+(u>>3>>3>>4)])<<4)+((u>>3>>3)&15u))])<<3)+((u>>3)&7u))])<<3)+((u)&7u))]:2;
}
static inline uint_fast16_t
_hb_ucd_dm (unsigned u)
{
- return u<195102u?_hb_ucd_u16[6032+(((_hb_ucd_u8[17084+(((_hb_ucd_u8[16702+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0;
+ return u<195102u?_hb_ucd_u16[6976+(((_hb_ucd_u8[16716+(((_hb_ucd_u8[16334+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0;
}
#elif !defined(HB_NO_UCD_UNASSIGNED)
static const uint8_t
-_hb_ucd_u8[14752] =
+_hb_ucd_u8[17524] =
{
- 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 9, 10, 7, 7, 7, 7, 11, 12, 13, 13, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 22, 22, 22, 22, 24, 7, 7,
- 25, 26, 22, 22, 22, 27, 28, 29, 22, 30, 31, 32, 33, 34, 35, 36,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 37, 7, 38, 39, 7, 40, 7, 7, 7, 41, 22, 42,
- 7, 7, 43, 7, 44, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 45, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 46,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 47,
+ 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 5, 5, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 5, 17, 15, 18, 19, 20, 21, 22, 23,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 25, 26, 5, 27, 28,
+ 5, 29, 30, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 31, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 32,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 33,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 34, 35, 36, 37, 38, 39, 34, 34, 34, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 64, 65, 66, 67, 68, 69, 70, 71, 69, 72, 73,
- 69, 69, 64, 74, 64, 64, 75, 76, 77, 78, 79, 80, 81, 82, 69, 83,
- 84, 85, 86, 87, 88, 89, 69, 69, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 90, 34, 34, 34, 34,
- 91, 34, 34, 34, 34, 34, 34, 34, 34, 92, 34, 34, 93, 94, 95, 96,
- 97, 98, 99,100,101,102,103,104, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,105,
- 106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,
- 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,
- 107,107, 34, 34,108,109,110,111, 34, 34,112,113,114,115,116,117,
- 118,119,120,121,122,123,124,125,126,127,128,129, 34, 34,130,131,
- 132,133,134,135,136,137,138,139,140,141,142,122,143,144,145,146,
- 147,148,149,150,151,152,153,122,154,155,122,156,157,158,159,122,
- 160,161,162,163,164,165,166,122,167,168,169,170,122,171,172,173,
- 34, 34, 34, 34, 34, 34, 34,174,175, 34,176,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,177,
- 34, 34, 34, 34, 34, 34, 34, 34,178,122,122,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,
- 122,122,122,122,122,122,122,122, 34, 34, 34, 34,179,122,122,122,
- 34, 34, 34, 34,180,181,182,183,122,122,122,122,184,185,186,187,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,188,
- 34, 34, 34, 34, 34, 34, 34, 34, 34,189,190,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,191,
- 34, 34,192, 34, 34,193,122,122,122,122,122,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,194,195,122,122,122,122,122,122,
- 122,122,122,122,122,122,122,122,122,122,122,122,122,122,196,197,
- 69,198,199,200,201,202,203,122,204,205,206,207,208,209,210,211,
- 69, 69, 69, 69,212,213,122,122,122,122,122,122,122,122,214,122,
- 215,216,217,122,122,218,122,122,122,219,122,122,122,122,122,220,
- 34,221,222,122,122,122,122,122,223,224,225,122,226,227,122,122,
- 228,229,230,231,232,122, 69,233, 69, 69, 69, 69, 69,234,235,236,
- 237,238, 69, 69,239,240, 69,241,122,122,122,122,122,122,122,122,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,242, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,243, 34,
- 244, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,245, 34, 34,
- 34, 34, 34, 34, 34, 34, 34,246, 34, 34, 34, 34,247,122,122,122,
- 34, 34, 34, 34,248,122,122,122,122,122,122,122,122,122,122,122,
- 34, 34, 34, 34, 34, 34,249, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34,250,122,122,122,122,122,122,122,122,
- 251,122,252,253,122,122,122,122,122,122,122,122,122,122,122,122,
- 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,254,
- 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,255,
+ 16, 17, 18, 19, 20, 17, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 33, 41, 42, 43, 44, 45,
+ 46, 47, 48, 39, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 49, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 50, 17, 17, 17, 51, 17, 52, 53, 54, 55, 56, 57, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 58, 59, 59, 59, 59, 59, 59, 59, 59,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 17, 61, 62, 17, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 17, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 17, 17, 17, 97, 98, 99,100,100,100,100,100,100,100,100,100,101,
+ 17, 17, 17, 17,102, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17,103, 17, 17,104,100,100,100,100,100,100,100,100,100,
+ 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
+ 100,105,100,100,100,100,100,100, 17, 17,106,107,100,108,109,110,
+ 17, 17, 17, 17, 17, 17, 17,111, 17, 17, 17, 17,112,113,100,100,
+ 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,114,
+ 17,115,116,100,100,100,100,100,100,100,100,100,117,100,100,100,
+ 100,100,100,100,100,100,100,100,100,100,100,100,118, 39,119,120,
+ 121,122,123,124,125,126,127,128, 39, 39,129,100,100,100,100,130,
+ 131,132,133,100,134,135,100,136,137,138,100,100,139,140,141,100,
+ 142,143,144,145, 39, 39,146,147,148, 39,149,150,100,100,100,100,
+ 17, 17, 17, 17, 17, 17,151, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17,152,153, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,154, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,155, 17, 17,156,100,
+ 100,100,100,100,100,100,100,100, 17, 17,157,100,100,100,100,100,
+ 17, 17, 17,158, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17,159,100,100,100,100,100,100,100,100,100,100,100,100,
+ 160,161,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,162,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,163,
0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2,
7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16,
@@ -2951,7 +2982,7 @@ _hb_ucd_u8[14752] =
43, 43, 40, 21, 2, 81, 57, 20, 36, 36, 36, 43, 43, 75, 43, 43,
43, 43, 75, 43, 75, 43, 43, 44, 2, 2, 2, 2, 2, 2, 2, 64,
36, 36, 36, 36, 70, 43, 44, 64, 36, 36, 36, 36, 36, 61, 44, 44,
- 36, 36, 36, 36, 82, 36, 36, 61, 65, 44, 44, 44, 43, 43, 43, 43,
+ 36, 36, 36, 36, 82, 36, 36, 61, 65, 44, 44, 57, 43, 43, 43, 43,
36, 36, 36, 36, 83, 43, 43, 43, 43, 84, 43, 43, 43, 43, 43, 43,
43, 85, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 85, 71, 86,
87, 43, 43, 43, 85, 86, 87, 86, 70, 43, 43, 43, 36, 36, 36, 36,
@@ -3024,13 +3055,13 @@ _hb_ucd_u8[14752] =
85, 85, 87, 43, 43, 43, 85, 86, 86, 87, 43, 43, 43, 43, 80, 57,
2, 2, 2, 88, 2, 2, 2, 44, 43, 43, 43, 43, 43, 43, 43,109,
43, 43, 43, 43, 43, 43, 43, 80, 43, 43, 98, 36, 36, 36, 36, 36,
- 36, 36, 85, 43, 43, 85, 85, 86, 86, 85, 98, 36, 36, 36, 61, 44,
- 97, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 21, 64,
+ 36, 36, 85, 43, 43, 85, 85, 86, 86, 85, 98, 36, 36, 36, 61, 2,
+ 97, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 21, 2,
43, 98, 36, 36, 36, 36, 36, 36, 94, 43, 43, 86, 43, 87, 43, 36,
36, 36, 36, 85, 43, 86, 87, 87, 43, 86, 44, 44, 44, 44, 2, 2,
36, 36, 86, 86, 86, 86, 43, 43, 43, 43, 86, 43, 44, 93, 2, 2,
7, 7, 7, 7, 7, 44, 62, 36, 36, 36, 36, 36, 40, 40, 40, 2,
- 16, 16, 16, 16,110, 44, 44, 44, 11, 11, 11, 11, 11, 47, 48, 11,
+ 16, 16, 16, 16, 34,110, 44, 44, 11, 11, 11, 11, 11, 47, 48, 11,
2, 2, 2, 2, 44, 44, 44, 44, 43, 60, 43, 43, 43, 43, 43, 43,
85, 43, 43, 43, 71, 36, 70, 36, 36, 36, 71, 94, 43, 61, 44, 44,
16, 16, 16, 16, 16, 16, 40, 40, 40, 40, 40, 40, 40, 45, 16, 16,
@@ -3058,33 +3089,33 @@ _hb_ucd_u8[14752] =
67, 67, 67, 67, 4, 4, 67, 67, 8, 67, 67, 67,145,146, 67, 67,
67, 67, 67, 67, 67, 67,144, 67, 67, 67, 67, 67, 67, 26, 8, 8,
8, 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8,
- 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 92, 44, 44, 44, 44,
- 67, 67, 67, 67, 67, 92, 44, 44, 27, 27, 27, 27, 27, 27, 67, 67,
- 67, 67, 67, 67, 67, 27, 27, 27, 67, 67, 67, 26, 67, 67, 67, 67,
- 26, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8, 8, 8,
- 67, 67, 67, 67, 67, 67, 67, 26, 67, 67, 67, 67, 4, 4, 4, 4,
- 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67,
- 8, 8,129,147, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4,
- 8,129,148,148,148,148,148,148,148,148,148,148,147, 8, 8, 8,
- 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8,
- 8, 8,144, 26, 8, 8,144, 67, 67, 67, 44, 67, 67, 67, 67, 67,
- 67, 67, 67, 55, 67, 67, 67, 67, 32, 11, 32, 34, 34, 34, 34, 11,
- 32, 32, 34, 16, 16, 16, 40, 11, 32, 32,140, 67, 67,138, 34,149,
- 43, 32, 44, 44, 93, 2, 99, 2, 16, 16, 16,150, 44, 44,150, 44,
- 36, 36, 36, 36, 44, 44, 44, 52, 64, 44, 44, 44, 44, 44, 44, 57,
- 36, 36, 36, 61, 44, 44, 44, 44, 36, 36, 36, 61, 36, 36, 36, 61,
- 2,121,121, 2,125,126,121, 2, 2, 2, 2, 6, 2,108,121, 2,
- 121, 4, 4, 4, 4, 2, 2, 88, 2, 2, 2, 2, 2,120, 2, 2,
- 108,151, 2, 2, 2, 2, 2, 2, 67, 2,152,148,148,148,153, 44,
- 67, 67, 67, 67, 67, 55, 67, 67, 67, 67, 44, 44, 44, 44, 44, 44,
- 67, 67, 67, 44, 44, 44, 44, 44, 1, 2,154,155, 4, 4, 4, 4,
- 4, 67, 4, 4, 4, 4,156,157,158,105,105,105,105, 43, 43, 86,
- 159, 40, 40, 67,105,160, 63, 67, 36, 36, 36, 61, 57,161,162, 69,
- 36, 36, 36, 36, 36, 63, 40, 69, 44, 44, 62, 36, 36, 36, 36, 36,
- 67, 27, 27, 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 44, 55,
- 67, 67, 67, 67, 67, 67, 67, 92, 27, 27, 27, 27, 27, 67, 67, 67,
- 67, 67, 67, 67, 27, 27, 27, 27,163, 27, 27, 27, 27, 27, 27, 27,
- 36, 36, 83, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,164, 2,
+ 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 92, 44, 44,
+ 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27,
+ 67, 67, 67, 26, 67, 67, 67, 67, 26, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 26,
+ 67, 67, 67, 67, 4, 4, 4, 4, 4, 4, 4, 27, 27, 27, 27, 27,
+ 27, 27, 67, 67, 67, 67, 67, 67, 8, 8,129,147, 8, 8, 8, 8,
+ 8, 8, 8, 4, 4, 4, 4, 4, 8,129,148,148,148,148,148,148,
+ 148,148,148,148,147, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8,
+ 8, 8, 8, 8, 8, 8, 4, 8, 8, 8,144, 26, 8, 8,144, 67,
+ 67, 67, 44, 67, 67, 67, 67, 67, 67, 67, 67, 55, 67, 67, 67, 67,
+ 32, 11, 32, 34, 34, 34, 34, 11, 32, 32, 34, 16, 16, 16, 40, 11,
+ 32, 32,140, 67, 67,138, 34,149, 43, 32, 44, 44, 93, 2, 99, 2,
+ 16, 16, 16,150, 44, 44,150, 44, 36, 36, 36, 36, 44, 44, 44, 52,
+ 64, 44, 44, 44, 44, 44, 44, 57, 36, 36, 36, 61, 44, 44, 44, 44,
+ 36, 36, 36, 61, 36, 36, 36, 61, 2,121,121, 2,125,126,121, 2,
+ 2, 2, 2, 6, 2,108,121, 2,121, 4, 4, 4, 4, 2, 2, 88,
+ 2, 2, 2, 2, 2,120, 2, 2,108,151, 2, 2, 2, 2, 2, 2,
+ 67, 2,152,148,148,148,153, 44, 67, 67, 67, 67, 67, 55, 67, 67,
+ 67, 67, 44, 44, 44, 44, 44, 44, 67, 67, 67, 44, 44, 44, 44, 44,
+ 1, 2,154,155, 4, 4, 4, 4, 4, 67, 4, 4, 4, 4,156,157,
+ 158,105,105,105,105, 43, 43, 86,159, 40, 40, 67,105,160, 63, 67,
+ 36, 36, 36, 61, 57,161,162, 69, 36, 36, 36, 36, 36, 63, 40, 69,
+ 44, 44, 62, 36, 36, 36, 36, 36, 67, 27, 27, 67, 67, 67, 67, 67,
+ 67, 67, 67, 44, 44, 44, 44, 55, 67, 67, 67, 67, 67, 67, 67, 92,
+ 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27,
+ 163, 27, 27, 27, 27, 27, 27, 27, 36, 36, 83, 36, 36, 36, 36, 36,
+ 67, 67, 67, 92, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36,164, 2,
7, 7, 7, 7, 7, 36, 44, 44, 32, 32, 32, 32, 32, 32, 32, 70,
51,165, 43, 43, 43, 43, 43, 88, 32, 32, 32, 32, 32, 32, 40, 43,
36, 36, 36,105,105,105,105,105, 43, 2, 2, 2, 44, 44, 44, 44,
@@ -3092,7 +3123,7 @@ _hb_ucd_u8[14752] =
16, 32, 32, 32, 32, 32, 32, 32, 45, 16, 16, 16, 34, 34, 34, 32,
32, 32, 32, 32, 42,166, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32,
- 32, 32, 11, 11, 34,110, 44, 44, 32,150,150, 32, 32, 44, 44, 44,
+ 32, 32, 11, 11, 34, 34, 32, 44, 32,150,150, 32, 32, 32, 47, 44,
44, 40,167, 35, 40, 35, 36, 36, 36, 71, 36, 71, 36, 70, 36, 36,
36, 94, 87, 85, 67, 67, 80, 44, 27, 27, 27, 67,168, 44, 44, 44,
36, 36, 2, 2, 44, 44, 44, 44, 86, 36, 36, 36, 36, 36, 36, 36,
@@ -3153,8 +3184,10 @@ _hb_ucd_u8[14752] =
36, 61, 44, 44, 27, 27, 27, 27, 36, 44, 44, 44, 93, 2, 64, 44,
44, 44, 44, 44,179, 27, 27, 27, 11, 47, 44, 44, 44, 44, 44, 44,
16,110, 44, 44, 44, 27, 27, 27, 36, 36, 43, 43, 44, 44, 44, 44,
- 27, 27, 27, 27, 27, 27, 27,100, 36, 36, 36, 36, 36, 57,184, 44,
- 36, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 57, 43,
+ 7, 7, 7, 7, 7, 36, 36, 69, 11, 11, 11, 44, 57, 43, 43,159,
+ 16, 16, 16, 44, 44, 44, 44, 8, 27, 27, 27, 27, 27, 27, 27,100,
+ 36, 36, 36, 36, 36, 57,184, 44, 36, 44, 44, 44, 44, 44, 44, 44,
+ 44, 36, 61, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43,
27, 27, 27, 95, 44, 44, 44, 44,180, 27, 30, 2, 2, 44, 44, 44,
36, 43, 43, 2, 2, 44, 44, 44, 36, 36,183, 27, 27, 27, 44, 44,
87, 98, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43,
@@ -3172,14 +3205,18 @@ _hb_ucd_u8[14752] =
86, 87, 43, 43, 43, 80, 44, 44, 43, 86, 62, 36, 36, 36, 61, 62,
61, 36, 62, 36, 36, 57, 71, 86, 85, 86, 90, 89, 90, 89, 86, 44,
61, 44, 44, 89, 44, 44, 62, 36, 36, 86, 44, 43, 43, 43, 80, 44,
- 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 94, 86, 43, 43, 43, 43,
- 86, 43, 85, 71, 36, 63, 2, 2, 7, 7, 7, 7, 7, 2, 93, 71,
- 86, 87, 43, 43, 85, 85, 86, 87, 85, 43, 36, 72, 44, 44, 44, 44,
- 36, 36, 36, 36, 36, 36, 36, 94, 86, 43, 43, 44, 86, 86, 43, 87,
- 60, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 43, 44,
- 86, 87, 43, 43, 43, 85, 87, 87, 60, 2, 61, 44, 44, 44, 44, 44,
- 2, 2, 2, 2, 2, 2, 64, 44, 36, 36, 36, 36, 36, 70, 87, 86,
- 43, 43, 43, 87, 63, 44, 44, 44, 86, 43, 43, 87, 43, 43, 44, 44,
+ 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 62, 44, 61,
+ 36, 36, 36, 62, 86, 87, 43, 43, 80, 90, 89, 89, 86, 90, 86, 85,
+ 71, 71, 2, 93, 64, 44, 44, 44, 57, 80, 44, 44, 44, 44, 44, 44,
+ 36, 36, 94, 86, 43, 43, 43, 43, 86, 43, 85, 71, 36, 63, 2, 2,
+ 7, 7, 7, 7, 7, 2, 93, 71, 86, 87, 43, 43, 85, 85, 86, 87,
+ 85, 43, 36, 72, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 94,
+ 86, 43, 43, 44, 86, 86, 43, 87, 60, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 36, 36, 43, 44, 86, 87, 43, 43, 43, 85, 87, 87,
+ 60, 2, 61, 44, 44, 44, 44, 44, 2, 2, 2, 2, 2, 2, 64, 44,
+ 36, 36, 36, 36, 36, 70, 87, 86, 43, 43, 43, 87, 63, 44, 44, 44,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 44, 44, 44, 44, 44, 44,
+ 36, 36, 36, 36, 36, 61, 57, 87, 86, 43, 43, 87, 43, 43, 44, 44,
7, 7, 7, 7, 7, 27, 2, 97, 43, 43, 43, 43, 87, 60, 44, 44,
27,100, 44, 44, 44, 44, 44, 62, 36, 36, 36, 61, 62, 44, 36, 36,
36, 36, 62, 61, 36, 36, 36, 36, 86, 86, 86, 89, 90, 57, 85, 71,
@@ -3189,49 +3226,52 @@ _hb_ucd_u8[14752] =
2, 2, 2, 59, 44, 44, 44, 44, 70, 43, 43, 85, 87, 43, 36, 36,
36, 36, 36, 36, 36, 43, 43, 43, 43, 43, 43, 85, 43, 2, 72, 2,
2, 64, 44, 44, 44, 44, 44, 44, 2, 2, 2, 2, 2, 44, 44, 44,
- 43, 43, 43, 80, 43, 43, 43, 87, 63, 2, 2, 44, 44, 44, 44, 44,
- 2, 36, 36, 36, 36, 36, 36, 36, 44, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 89, 43, 43, 43, 85, 43, 87, 80, 44, 44, 44, 44,
- 36, 36, 36, 61, 36, 62, 36, 36, 70, 43, 43, 80, 44, 80, 43, 57,
- 43, 43, 43, 70, 44, 44, 44, 44, 36, 36, 36, 62, 61, 36, 36, 36,
- 36, 36, 36, 36, 36, 86, 86, 90, 43, 89, 87, 87, 61, 44, 44, 44,
- 36, 70, 85,107, 64, 44, 44, 44, 43, 94, 36, 36, 36, 36, 36, 36,
- 36, 36, 86, 43, 43, 80, 44, 86, 85, 60, 2, 2, 2, 2, 2, 2,
+ 63, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 80, 43, 43, 43, 87,
+ 63, 2, 2, 44, 44, 44, 44, 44, 2, 36, 36, 36, 36, 36, 36, 36,
+ 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 89, 43, 43, 43,
+ 85, 43, 87, 80, 44, 44, 44, 44, 36, 36, 36, 61, 36, 62, 36, 36,
+ 70, 43, 43, 80, 44, 80, 43, 57, 43, 43, 43, 70, 44, 44, 44, 44,
+ 36, 36, 36, 62, 61, 36, 36, 36, 36, 36, 36, 36, 36, 86, 86, 90,
+ 43, 89, 87, 87, 61, 44, 44, 44, 36, 70, 85,107, 64, 44, 44, 44,
+ 43, 94, 36, 36, 36, 36, 36, 36, 36, 36, 86, 43, 43, 80, 44, 86,
+ 85, 60, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 80, 44, 44,
27, 27, 91, 67, 67, 67, 56, 20,168, 67, 67, 67, 67, 67, 67, 67,
67, 44, 44, 44, 44, 44, 44, 93,105,105,105,105,105,105,105,181,
2, 2, 64, 44, 44, 44, 44, 44, 63, 64, 44, 44, 44, 44, 44, 44,
65, 65, 65, 65, 65, 65, 65, 65, 71, 36, 36, 70, 43, 43, 43, 43,
- 43, 43, 43, 44, 44, 44, 44, 44, 43, 43, 60, 44, 44, 44, 44, 44,
+ 43, 43, 43, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 43,
+ 43, 43, 43, 43, 43, 86, 87, 43, 43, 43, 60, 44, 44, 44, 44, 44,
43, 43, 43, 60, 2, 2, 67, 67, 40, 40, 97, 44, 44, 44, 44, 44,
7, 7, 7, 7, 7,179, 27, 27, 27, 62, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 44, 44, 62, 36, 27, 27, 27, 30, 2, 64, 44, 44,
+ 36, 36, 36, 36, 44, 44, 62, 36, 40, 69, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 83,164, 2, 27, 27, 27, 30, 2, 64, 44, 44,
36, 36, 36, 36, 36, 61, 44, 57, 94, 86, 86, 86, 86, 86, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 44, 44, 44, 57,
43, 74, 40, 40, 40, 40, 40, 40, 40, 88, 80, 44, 44, 44, 44, 44,
- 86, 44, 44, 44, 44, 44, 44, 44, 40, 40, 52, 40, 40, 40, 52, 81,
- 36, 61, 44, 44, 44, 44, 44, 44, 44, 61, 44, 44, 44, 44, 44, 44,
- 36, 61, 62, 44, 44, 44, 44, 44, 44, 44, 36, 36, 44, 44, 44, 44,
- 36, 36, 36, 36, 36, 44, 50, 60, 65, 65, 44, 44, 44, 44, 44, 44,
- 43, 43, 43, 43, 43, 43, 43, 44, 43, 43, 43, 80, 44, 44, 44, 44,
- 67, 67, 67, 92, 55, 67, 67, 67, 67, 67,186, 87, 43, 67,186, 86,
- 86,187, 65, 65, 65, 84, 43, 43, 43, 76, 50, 43, 43, 43, 67, 67,
- 67, 67, 67, 67, 67, 43, 43, 67, 67, 43, 76, 44, 44, 44, 44, 44,
- 27, 27, 44, 44, 44, 44, 44, 44, 11, 11, 11, 11, 11, 16, 16, 16,
- 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16,
- 16, 16,110, 16, 16, 16, 16, 16, 11, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 47, 11, 44, 47, 48, 47, 48, 11, 47, 11,
- 11, 11, 11, 16, 16,150,150, 16, 16, 16,150, 16, 16, 16, 16, 16,
- 16, 16, 11, 48, 11, 47, 48, 11, 11, 11, 47, 11, 11, 11, 47, 16,
- 16, 16, 16, 16, 11, 48, 11, 47, 11, 11, 47, 47, 44, 11, 11, 11,
- 47, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11,
- 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 44, 11, 11, 11, 11,
- 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16,
- 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16,
- 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16,
- 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 44, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 43, 43, 43, 76, 67, 50, 43, 43,
+ 86, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 62,
+ 40, 40, 52, 40, 40, 40, 52, 81, 36, 61, 44, 44, 44, 44, 44, 44,
+ 44, 61, 44, 44, 44, 44, 44, 44, 36, 61, 62, 44, 44, 44, 44, 44,
+ 44, 44, 36, 36, 44, 44, 44, 44, 36, 36, 36, 36, 36, 44, 50, 60,
+ 65, 65, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44,
+ 43, 43, 43, 80, 44, 44, 44, 44, 67, 67, 67, 92, 55, 67, 67, 67,
+ 67, 67,186, 87, 43, 67,186, 86, 86,187, 65, 65, 65, 84, 43, 43,
+ 43, 76, 50, 43, 43, 43, 67, 67, 67, 67, 67, 67, 67, 43, 43, 67,
+ 67, 43, 76, 44, 44, 44, 44, 44, 27, 27, 44, 44, 44, 44, 44, 44,
+ 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 16, 16, 16,110, 16, 16, 16, 16, 16,
+ 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 47, 11,
+ 44, 47, 48, 47, 48, 11, 47, 11, 11, 11, 11, 16, 16,150,150, 16,
+ 16, 16,150, 16, 16, 16, 16, 16, 16, 16, 11, 48, 11, 47, 48, 11,
+ 11, 11, 47, 11, 11, 11, 47, 16, 16, 16, 16, 16, 11, 48, 11, 47,
+ 11, 11, 47, 47, 44, 11, 11, 11, 47, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16,
+ 16, 16, 16, 44, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11,
+ 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33,
+ 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31,
+ 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16,
+ 16, 33, 16, 16, 16, 32, 44, 7, 43, 43, 43, 76, 67, 50, 43, 43,
43, 43, 43, 43, 43, 43, 76, 67, 67, 67, 50, 67, 67, 67, 67, 67,
67, 67, 76, 21, 2, 2, 44, 44, 44, 44, 44, 44, 44, 57, 43, 43,
16, 16, 16, 16, 16, 39, 16, 16, 16, 16, 16, 16, 16, 16, 16,110,
@@ -3241,22 +3281,23 @@ _hb_ucd_u8[14752] =
43, 43, 43, 74, 40, 40, 40, 44, 7, 7, 7, 7, 7, 44, 44, 77,
36, 36, 36, 36, 36, 36, 36, 80, 36, 36, 36, 36, 36, 36, 43, 43,
7, 7, 7, 7, 7, 44, 44, 96, 36, 36, 36, 36, 36, 83, 43, 43,
- 36, 36, 36, 61, 36, 36, 62, 61, 36, 36, 61,179, 27, 27, 27, 27,
- 16, 16, 43, 43, 43, 74, 44, 44, 27, 27, 27, 27, 27, 27,163, 27,
- 188, 27,100, 44, 44, 44, 44, 44, 27, 27, 27, 27, 27, 27, 27,163,
- 27, 27, 27, 27, 27, 27, 27, 44, 36, 36, 62, 36, 36, 36, 36, 36,
- 62, 61, 61, 62, 62, 36, 36, 36, 36, 61, 36, 36, 62, 62, 44, 44,
- 44, 61, 44, 62, 62, 62, 62, 36, 62, 61, 61, 62, 62, 62, 62, 62,
- 62, 61, 61, 62, 36, 61, 36, 36, 36, 61, 36, 36, 62, 36, 61, 61,
- 36, 36, 36, 36, 36, 62, 36, 36, 62, 36, 62, 36, 36, 62, 36, 36,
- 8, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 44, 44,
- 55, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27, 27, 27, 91, 67,
- 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 67, 67, 67, 67, 67,
- 67, 92, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 92, 44, 44, 44,
- 67, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 25, 41, 41,
- 67, 67, 67, 67, 44, 44, 67, 67, 67, 67, 67, 92, 44, 55, 67, 67,
- 67, 67, 67, 67, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 67, 55,
- 67, 67, 67, 44, 44, 44, 44, 67, 67, 92, 67, 67, 67, 67, 67, 67,
+ 188, 7, 7, 7, 7,189, 44, 93, 36, 36, 36, 61, 36, 36, 62, 61,
+ 36, 36, 61,179, 27, 27, 27, 27, 16, 16, 43, 43, 43, 74, 44, 44,
+ 27, 27, 27, 27, 27, 27,163, 27,190, 27,100, 44, 44, 44, 44, 44,
+ 27, 27, 27, 27, 27, 27, 27,163, 27, 27, 27, 27, 27, 27, 27, 44,
+ 36, 36, 62, 36, 36, 36, 36, 36, 62, 61, 61, 62, 62, 36, 36, 36,
+ 36, 61, 36, 36, 62, 62, 44, 44, 44, 61, 44, 62, 62, 62, 62, 36,
+ 62, 61, 61, 62, 62, 62, 62, 62, 62, 61, 61, 62, 36, 61, 36, 36,
+ 36, 61, 36, 36, 62, 36, 61, 61, 36, 36, 36, 36, 36, 62, 36, 36,
+ 62, 36, 62, 36, 36, 62, 36, 36, 8, 44, 44, 44, 44, 44, 44, 44,
+ 67, 67, 67, 67, 67, 67, 44, 44, 55, 67, 67, 67, 67, 67, 67, 67,
+ 27, 27, 27, 27, 27, 27, 91, 67, 67, 67, 67, 67, 67, 67, 67, 44,
+ 44, 44, 44, 67, 67, 67, 67, 67, 67, 92, 44, 44, 44, 44, 44, 44,
+ 67, 67, 67, 67, 92, 44, 44, 44, 67, 44, 44, 44, 44, 44, 44, 44,
+ 67, 67, 67, 67, 67, 25, 41, 41, 67, 67, 67, 67, 44, 44, 67, 67,
+ 67, 67, 67, 92, 44, 55, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44,
+ 67, 67, 67, 67, 67, 44, 44, 55, 67, 67, 67, 92, 44, 44, 44, 67,
+ 67, 67, 67, 67, 67, 67, 92, 55, 67, 92, 67, 67, 67, 67, 67, 67,
79, 44, 44, 44, 44, 44, 44, 44,171,171,171,171,171,171,171, 44,
171,171,171,171,171,171,171, 0, 0, 0, 29, 21, 21, 21, 23, 21,
22, 18, 21, 25, 21, 17, 13, 13, 25, 25, 25, 21, 21, 9, 9, 9,
@@ -3282,482 +3323,677 @@ _hb_ucd_u8[14752] =
6, 21, 11, 21, 24, 9, 6, 9, 23, 26, 6, 10, 4, 4, 3, 3,
7, 25, 17, 16, 16, 22, 16, 16, 25, 17, 25, 2, 25, 24, 2, 15,
12, 15, 14, 2, 21, 14, 7, 15, 12, 17, 21, 1, 26, 10, 10, 1,
- 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12,
- 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0,
+ 7, 13, 13, 2, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 0, 10, 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 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, 0, 0, 0, 17, 18, 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, 17, 18, 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, 20,
- 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 36, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 37, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0,
- 0, 0, 40, 41, 42, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 5,
- 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, 16, 18,
- 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, 21, 19, 0, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 35,
- 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 0,
- 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0,
- 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 62, 63,
- 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0,
- 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,
- 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0,
- 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 75, 76, 0, 77, 78, 0,
- 0, 79, 80, 0, 81, 62, 0, 82, 83, 0, 0, 84, 85, 86, 0, 0,
- 0, 87, 0, 88, 0, 0, 51, 89, 51, 0, 90, 0, 91, 0, 0, 0,
- 80, 0, 0, 0, 92, 93, 0, 94, 95, 96, 97, 0, 0, 0, 0, 0,
- 51, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 0,100, 0, 0,
- 0, 0, 0,101,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103,
- 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,106, 0,
- 0,107, 0, 0, 0, 0, 0, 0,108, 0,109, 0,102, 0, 0, 0,
- 0, 0,110,111, 0, 0, 0, 0, 0, 0, 0,112, 0, 0, 0, 0,
- 0, 0, 0,113, 0,114, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
- 5, 6, 7, 0, 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0,
- 0, 13, 0, 0, 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20,
- 21, 0, 0, 0, 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0,
- 0, 27, 0, 0, 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0,
- 33, 0, 0, 35, 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37,
- 38, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41,
- 42, 0, 0, 0, 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0,
- 47, 0, 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0,
- 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55,
- 0, 56, 0, 0, 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0,
- 0, 0, 0, 61, 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66,
- 0, 0, 0, 67, 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76,
- 0, 0, 77, 78, 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0,
- 0, 81, 0, 0, 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78,
- 84, 0, 85, 0, 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0,
- 0, 0, 0, 88, 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84,
- 0, 0, 33, 0, 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49,
- 0, 0, 93, 0, 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0,
- 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0,100,101, 93, 0, 0,
- 102, 0, 0, 0, 84, 0, 0,103, 0, 0, 0,104,105, 0, 0,106,
- 107, 0, 0, 0, 0, 0, 0,108, 0, 0,109, 0, 0, 0, 0,110,
- 33, 0,111,112,113, 35, 0, 0,114, 0, 0, 0,115, 0, 0, 0,
- 0, 0, 0,116, 0, 0,117, 0, 0, 0, 0,118, 88, 0, 0, 0,
- 0, 0, 57, 0, 0, 0, 0, 52,119, 0, 0, 0, 0,120, 0, 0,
- 121, 0, 0, 0, 0,119, 0, 0,122, 0, 0, 0, 0, 0, 0,123,
- 0, 0, 0,124, 0, 0, 0,125, 0,126, 0, 0, 0, 0,127,128,
- 129, 0,130, 0,131, 0, 0, 0,132,133,134, 0, 77, 0, 0, 0,
- 0, 0, 35, 0, 0, 0,135, 0, 0, 0,136, 0, 0,137, 0, 0,
- 138, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4,
- 5, 6, 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17,
- 18, 1, 1, 1, 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24,
- 25, 26, 27, 28, 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33,
- 34, 35, 1, 36, 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41,
- 42, 0, 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1,
- 21, 0, 0, 47, 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0,
- 0, 0, 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52,
- 54, 21, 35, 1, 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0,
- 0, 0, 0, 59, 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0,
- 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0,
- 0, 0, 68, 0, 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0,
- 0, 77, 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49,
- 0, 80, 0, 0, 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0,
- 0, 0, 83, 0, 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85,
- 1, 52, 15, 86, 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10,
- 1, 0, 0, 0, 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0,
- 0, 78, 0, 0, 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0,
- 21, 1, 21, 92, 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58,
- 81, 99,100, 4, 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0,
- 0, 0, 0, 61, 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50,
- 0, 0, 0, 38, 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68,
- 61, 0, 0, 0, 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0,
- 0, 0, 0,107, 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0,
- 0, 0, 0,108, 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40,
+ 0, 0, 0, 0, 0, 0, 41, 42, 43, 0, 44, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0,
+ 0, 0, 4, 5, 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15,
+ 16, 17, 16, 18, 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19,
+ 21, 19, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
+ 34, 0, 0, 35, 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49,
+ 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0,
+ 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59,
+ 60, 61, 62, 63, 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0,
+ 67, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 69, 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73,
+ 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, 0, 0, 76, 77,
+ 0, 78, 79, 0, 0, 80, 81, 0, 82, 62, 0, 83, 84, 0, 0, 85,
+ 86, 87, 0, 88, 0, 89, 0, 90, 0, 0, 51, 91, 51, 0, 92, 0,
+ 93, 0, 0, 0, 81, 0, 0, 0, 94, 95, 0, 96, 97, 98, 99, 0,
+ 0, 0, 0, 0, 51, 0, 0, 0, 0,100,101, 0, 0, 0, 0, 0,
+ 0,102, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 0,104,
+ 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0,107, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,108,109, 0, 0,110, 0, 0,
+ 0, 0, 0, 0,111, 0,112, 0,105, 0, 0, 0, 0, 0,113,114,
+ 0, 0, 0, 0, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117,
+ 0,118, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0,
+ 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, 0, 0,
+ 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0,
+ 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, 0, 0,
+ 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, 0, 35,
+ 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0,
+ 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0,
+ 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, 0, 0,
+ 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 52,
+ 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0,
+ 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 61,
+ 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, 0, 0, 0, 67,
+ 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, 0, 0, 77, 78,
+ 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, 0, 81, 0, 0,
+ 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, 84, 0, 85, 0,
+ 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, 0, 0, 0, 88,
+ 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, 0, 0, 33, 0,
+ 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, 0, 0, 93, 0,
+ 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0,
+ 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 0,101,102, 93, 0, 0,
+ 103, 0, 0, 0, 84, 0, 0,104, 0, 0, 0,105,106, 0, 0,107,
+ 108, 0, 0, 0, 0, 0, 0,109, 0, 0,110, 0, 0, 0, 0,111,
+ 33, 0,112,113,114, 57, 0, 0,115, 35, 0, 0,116, 0, 0, 0,
+ 117, 0, 0, 0, 0, 0, 0,118, 0, 0,119, 0, 0, 0, 0,120,
+ 88, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 52,121, 0, 0, 0,
+ 0,122, 0, 0,123, 0, 0, 0, 0,121, 0, 0,124, 0, 0, 0,
+ 0, 0, 79, 0, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,127,
+ 0,128, 0, 0, 0, 0,129,130,131, 0,132, 0,133, 0, 0, 0,
+ 134,135,136, 0, 77, 0, 0, 0, 0, 0, 35, 0, 0, 0,137, 0,
+ 0, 0,138, 0, 0, 0,139, 0, 0,140, 0, 0,141, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 4,
+ 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1, 1, 1,
+ 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26, 27, 28,
+ 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, 1, 36,
+ 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0, 0, 0,
+ 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0, 0, 47,
+ 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 19, 52, 1,
+ 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21, 35, 1,
+ 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, 0, 59,
+ 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, 64, 0,
+ 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0,
+ 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77, 0, 0,
+ 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80, 0, 0,
+ 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, 83, 0,
+ 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52, 15, 86,
+ 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, 1, 0, 0, 0,
+ 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, 0, 78, 0, 0,
+ 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, 21, 1, 21, 92,
+ 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, 81, 99,100, 4,
+ 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, 0, 0, 0, 61,
+ 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50, 0, 0, 0, 38,
+ 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68, 61, 0, 0, 0,
+ 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0, 0, 0, 0,107,
+ 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, 0, 0, 0,108,
+ 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0, 0, 0, 49, 50,
0, 0, 19, 58, 0, 0, 0, 51, 0,111, 14, 52,112, 41, 0, 0,
62, 0, 0, 61, 0, 0,113, 0, 87, 0, 0, 0, 61, 62, 0, 0,
62, 0, 89, 0, 0,113, 0, 0, 0, 0,114, 0, 0, 0, 78, 55,
- 0, 38, 1, 58, 1, 58, 0, 0, 63, 89, 0, 0,115, 0, 0, 0,
- 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0, 0, 0, 0, 79,
- 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, 0, 0,
- 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0, 0, 0, 0,117,
- 0,118,119,120,121, 0,104, 4,122, 49, 23, 0, 0, 0, 38, 50,
- 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, 48,105, 87, 0,
- 0, 0, 0, 1, 0, 0, 0,123, 4,122, 0, 0, 0, 1,124, 0,
- 0, 0, 0, 0,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,
- 1, 1, 1, 1, 1,220,220,220,220,230,230,230,230,240,230,220,
- 220,220,230,230,230,220,220, 0,230,230,230,220,220,220,220,230,
- 232,220,220,230,233,234,234,233,234,234,233,230, 0, 0, 0,230,
- 0,220,230,230,230,230,220,230,230,230,222,220,230,230,220,220,
- 230,222,228,230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20,
- 21, 22, 0, 23, 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, 0,
- 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,230,230,220,220,230,
- 220,230,230,220, 35, 0, 0, 0, 0, 0,230,230,230, 0, 0,230,
- 230, 0,220,230,230,220, 0, 0, 0, 36, 0, 0,230,220,230,230,
- 220,220,230,220,220,230,220,230,220,230,230, 0, 0,220, 0, 0,
- 230,230, 0,230, 0,230,230,230,230,230, 0, 0, 0,220,220,220,
- 230,220,220,220,230,230, 0,220, 27, 28, 29,230, 7, 0, 0, 0,
- 0, 9, 0, 0, 0,230,220,230,230, 0, 0, 0, 0, 0,230, 0,
- 0, 84, 91, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 9, 0,
- 103,103, 9, 0,107,107,107,107,118,118, 9, 0,122,122,122,122,
- 220,220, 0, 0, 0,220, 0,220, 0,216, 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,220, 0, 0, 0, 0, 7, 0, 9, 9, 0,
- 9, 9, 0, 0, 0,230, 0, 0, 0,228, 0, 0, 0,222,230,220,
- 220, 0, 0, 0,230, 0, 0,220,230,220, 0,220,230,230,230, 0,
- 0, 0, 9, 9, 0, 0, 7, 0,230, 0, 1, 1, 1, 0, 0, 0,
- 230,234,214,220,202,230,230,230,230,230,232,228,228,220,218,230,
- 233,220,230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230,
- 220,230, 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0,
- 0, 0, 0,220,230, 0,230,230,220, 0, 0,230, 0, 0, 26, 0,
- 0,220, 0,230,230, 1,220, 0, 0,230,220, 0, 0, 0,220,220,
- 0, 0,230,220, 0, 9, 7, 0, 0, 7, 9, 0, 0, 0, 9, 7,
- 6, 6, 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, 1, 0, 0,
- 0,226,216,216,216,216,216, 0,220,220,220, 0,232,232,220,230,
- 230,230, 7, 0, 16, 17, 17, 33, 17, 49, 17, 17, 84, 97,135,145,
- 26, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 0, 38, 1, 58, 1, 58, 0, 0, 0, 0, 0, 88, 63, 89, 0, 0,
+ 115, 0, 0, 0, 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0,
+ 0, 0, 0, 79, 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0,
+ 79, 0, 0, 0, 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0,
+ 0, 0, 0,117, 0,118,119,120,121, 0,104, 4,122, 49, 23, 0,
+ 0, 0, 38, 50, 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1,
+ 48,105, 87, 0, 0, 0, 0, 1, 0, 0, 0,123, 0, 0, 0,112,
+ 4,122, 0, 0, 0, 1,124, 0, 0, 0, 0, 0,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, 1, 1, 1, 1, 1,220,220,220,
+ 220,230,230,230,230,240,230,220,220,220,230,230,230,220,220, 0,
+ 230,230,230,220,220,220,220,230,232,220,220,230,233,234,234,233,
+ 234,234,233,230, 0, 0, 0,230, 0,220,230,230,230,230,220,230,
+ 230,230,222,220,230,230,220,220,230,222,228,230, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, 25, 0,
+ 230,220, 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, 30, 31,
+ 32, 33, 34,230,230,220,220,230,220,230,230,220, 35, 0, 0, 0,
+ 0, 0,230,230,230, 0, 0,230,230, 0,220,230,230,220, 0, 0,
+ 0, 36, 0, 0,230,220,230,230,220,220,230,220,220,230,220,230,
+ 220,230,230, 0, 0,220, 0, 0,230,230, 0,230, 0,230,230,230,
+ 230,230, 0, 0, 0,220,220,220,230,220,220,220,230,230, 0,220,
+ 27, 28, 29,230, 7, 0, 0, 0, 0, 9, 0, 0, 0,230,220,230,
+ 230, 0, 0, 0, 0, 0,230, 0, 0, 84, 91, 0, 0, 0, 0, 9,
+ 9, 0, 0, 0, 0, 0, 9, 0,103,103, 9, 0,107,107,107,107,
+ 118,118, 9, 0,122,122,122,122,220,220, 0, 0, 0,220, 0,220,
+ 0,216, 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,220, 0,
+ 0, 0, 0, 7, 0, 9, 9, 0, 9, 9, 0, 0, 0,230, 0, 0,
+ 0,228, 0, 0, 0,222,230,220,220, 0, 0, 0,230, 0, 0,220,
+ 230,220, 0,220,230,230,230, 0, 0, 0, 9, 9, 0, 0, 7, 0,
+ 230, 0, 1, 1, 1, 0, 0, 0,230,234,214,220,202,230,230,230,
+ 230,230,232,228,228,220,218,230,233,220,230,220,230,230, 1, 1,
+ 1, 1, 1,230, 0, 1, 1,230,220,230, 1, 1, 0, 0,218,228,
+ 232,222,224,224, 0, 8, 8, 0, 0, 0, 0,220,230, 0,230,230,
+ 220, 0, 0,230, 0, 0, 26, 0, 0,220, 0,230,230, 1,220, 0,
+ 0,230,220, 0, 0, 0,220,220, 0, 0,230,220, 0, 9, 7, 0,
+ 0, 7, 9, 0, 0, 0, 9, 7, 6, 6, 0, 0, 0, 0, 1, 0,
+ 0,216,216, 1, 1, 1, 0, 0, 0,226,216,216,216,216,216, 0,
+ 220,220,220, 0,232,232,220,230,230,230, 7, 0, 16, 17, 17, 33,
+ 17, 49, 17, 17, 84, 97,135,145, 26, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17,177, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 5, 3,
- 3, 3, 3, 3, 6, 7, 8, 3, 3, 3, 3, 3, 9, 10, 11, 12,
- 13, 3, 3, 3, 3, 3, 3, 3, 3, 14, 3, 15, 3, 3, 3, 3,
- 3, 3, 16, 17, 18, 19, 20, 21, 3, 3, 3, 22, 23, 24, 3, 3,
- 3, 3, 3, 3, 25, 3, 3, 3, 3, 3, 3, 3, 3, 26, 3, 3,
- 27, 28, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3,
- 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0,
- 0, 0, 0, 9, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12,
- 13, 0, 0, 14, 15, 16, 6, 0, 17, 18, 19, 19, 19, 20, 21, 22,
- 23, 24, 19, 25, 0, 26, 27, 19, 19, 28, 29, 30, 0, 31, 0, 0,
- 0, 8, 0, 0, 0, 0, 0, 0, 0, 19, 28, 0, 32, 33, 9, 34,
- 35, 19, 0, 0, 36, 37, 38, 39, 40, 19, 0, 41, 42, 43, 44, 31,
- 0, 1, 45, 42, 0, 0, 0, 0, 0, 32, 14, 14, 0, 0, 0, 0,
- 14, 0, 0, 46, 47, 47, 47, 47, 48, 49, 47, 47, 47, 47, 50, 51,
- 52, 53, 43, 21, 0, 0, 0, 0, 0, 0, 0, 54, 6, 55, 0, 14,
- 19, 1, 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 19, 58, 31,
- 0, 0, 0, 0, 0, 0, 0, 59, 14, 0, 0, 0, 0, 1, 0, 2,
- 0, 0, 0, 3, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 2, 3, 0, 4, 5, 0, 0, 6, 0, 0,
- 0, 7, 0, 0, 0, 1, 1, 0, 0, 8, 9, 0, 8, 9, 0, 0,
- 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 13, 0, 0, 0, 0, 14,
- 15, 16, 17, 0, 0, 0, 1, 0, 0, 18, 19, 0, 0, 0, 20, 0,
- 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 8,
- 21, 9, 0, 0, 22, 0, 0, 0, 0, 1, 0, 23, 24, 25, 0, 0,
- 26, 0, 0, 0, 8, 21, 27, 0, 1, 0, 0, 1, 1, 1, 1, 0,
- 1, 28, 29, 30, 0, 31, 32, 20, 1, 1, 0, 0, 0, 8, 21, 9,
- 1, 4, 5, 0, 0, 0, 33, 9, 0, 1, 1, 1, 0, 8, 21, 21,
- 21, 21, 34, 1, 35, 21, 21, 21, 9, 36, 0, 0, 37, 38, 1, 0,
- 39, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 21, 9, 1, 0,
- 0, 0, 40, 0, 8, 21, 21, 21, 21, 21, 21, 21, 21, 9, 0, 1,
- 1, 1, 1, 8, 21, 21, 21, 9, 0, 0, 0, 41, 0, 42, 43, 0,
- 0, 0, 1, 44, 0, 0, 0, 45, 8, 9, 1, 0, 0, 0, 8, 21,
- 21, 21, 9, 0, 1, 0, 1, 1, 8, 21, 21, 9, 0, 4, 5, 8,
- 9, 1, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 11, 11, 11, 12, 13,
- 13, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 13, 22, 13, 13, 13,
- 13, 23, 24, 24, 25, 26, 13, 13, 13, 27, 28, 29, 13, 30, 31, 32,
- 33, 34, 35, 36, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 37, 7, 38, 39, 7, 40, 7, 7,
- 7, 41, 13, 42, 7, 7, 43, 7, 44, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 45, 0, 0, 1, 2, 2, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 35, 36, 37, 37,
- 37, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 2, 2, 53, 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, 59,
- 59, 59, 59, 59, 59, 59, 61, 61, 59, 59, 59, 59, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 59, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 79, 70, 70, 70, 70, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81,
- 82, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 70, 70, 97, 98, 99,100,101,101,
- 102,103,104,105,106,107,108,109,110,111, 96,112,113,114,115,116,
- 117,118,119,119,120,121,122,123,124,125,126,127,128,129,130,131,
- 132, 96,133,134,135,136,137,138,139,140,141,142,143, 96,144,145,
- 96,146,147,148,149, 96,150,151,152,153,154,155,156, 96,157,158,
- 159,160, 96,161,162,163,164,164,164,164,164,164,164,165,166,164,
- 167, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96,168,169,169,169,169,169,169,169,169,170, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,171,171,
- 171,171,172, 96, 96, 96,173,173,173,173,174,175,176,177, 96, 96,
- 96, 96,178,179,180,181,182,182,182,182,182,182,182,182,182,182,
- 182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,
- 182,182,182,182,182,183,182,182,182,182,182,182,184,184,184,185,
- 186, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96,187,188,189,190,191,191,192, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,193,194,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96,195,196, 59,197,198,199,200,201,202, 96,203,204,
- 205, 59, 59,206, 59,207,208,208,208,208,208,209, 96, 96, 96, 96,
- 96, 96, 96, 96,210, 96,211,212,213, 96, 96,214, 96, 96, 96,215,
- 96, 96, 96, 96, 96,216,217,218,219, 96, 96, 96, 96, 96,220,221,
- 222, 96,223,224, 96, 96,225,226, 59,227,228, 96, 59, 59, 59, 59,
- 59, 59, 59,229,230,231,232,233, 59, 59,234,235, 59,236, 96, 96,
- 96, 96, 96, 96, 96, 96, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70,237, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 70,238, 70,239, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70,240, 70, 70, 70, 70, 70, 70, 70, 70, 70,241, 70, 70,
- 70, 70,242, 96, 96, 96, 70, 70, 70, 70,243, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 70, 70, 70, 70, 70, 70,244, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,245, 96, 96,
- 96, 96, 96, 96, 96, 96,246, 96,247,248, 0, 1, 2, 2, 0, 1,
- 2, 2, 2, 3, 4, 5, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 0, 0, 0, 19, 0, 19, 0, 0, 0, 0, 0,
- 26, 26, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9, 2, 2,
- 9, 9, 9, 9, 0, 9, 2, 2, 2, 2, 9, 0, 9, 0, 9, 9,
- 9, 2, 9, 2, 9, 9, 9, 9, 2, 9, 9, 9, 55, 55, 55, 55,
- 55, 55, 6, 6, 6, 6, 6, 1, 1, 6, 2, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 2, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 2, 2, 2, 2, 14, 14, 2, 2, 2, 3, 3, 3, 3, 3, 0,
- 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 1, 1, 1,
- 3, 3, 1, 3, 3, 3, 37, 37, 37, 37, 37, 37, 2, 37, 37, 37,
- 37, 2, 2, 37, 37, 37, 38, 38, 38, 38, 38, 38, 2, 2, 64, 64,
- 64, 64, 64, 64, 64, 2, 2, 64, 64, 64, 90, 90, 90, 90, 90, 90,
- 2, 2, 90, 90, 90, 2, 95, 95, 95, 95, 2, 2, 95, 2, 3, 3,
- 3, 2, 3, 3, 2, 2, 3, 3, 0, 3, 7, 7, 7, 7, 7, 1,
- 1, 1, 1, 7, 7, 7, 0, 0, 7, 7, 5, 5, 5, 5, 2, 5,
- 5, 5, 5, 2, 2, 5, 5, 2, 5, 5, 5, 2, 5, 2, 2, 2,
- 5, 5, 5, 5, 2, 2, 5, 5, 5, 2, 2, 2, 2, 5, 5, 5,
- 2, 5, 2, 11, 11, 11, 11, 11, 11, 2, 2, 2, 2, 11, 11, 2,
- 2, 11, 11, 11, 11, 11, 11, 2, 11, 11, 2, 11, 11, 2, 11, 11,
- 2, 2, 2, 11, 2, 2, 11, 2, 11, 2, 2, 2, 11, 11, 2, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 2, 10, 10, 10, 10,
- 2, 2, 10, 2, 2, 2, 2, 2, 10, 10, 2, 21, 21, 21, 21, 21,
- 21, 21, 21, 2, 2, 21, 21, 2, 21, 21, 21, 21, 2, 2, 21, 21,
- 2, 21, 2, 2, 21, 21, 2, 2, 22, 22, 2, 22, 22, 22, 22, 22,
- 22, 2, 22, 2, 22, 22, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2,
- 2, 22, 22, 2, 2, 2, 22, 22, 22, 22, 23, 23, 23, 23, 23, 2,
- 23, 23, 23, 23, 2, 2, 2, 23, 23, 2, 23, 23, 23, 2, 2, 23,
- 2, 2, 2, 2, 23, 23, 2, 2, 2, 23, 16, 16, 16, 16, 16, 2,
- 16, 16, 2, 16, 16, 16, 16, 16, 2, 2, 2, 16, 16, 2, 2, 2,
- 16, 16, 20, 20, 20, 20, 20, 2, 20, 20, 2, 2, 20, 20, 2, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2, 36, 36, 36, 36,
- 2, 36, 2, 36, 2, 2, 2, 2, 36, 2, 2, 2, 2, 36, 36, 2,
- 36, 2, 36, 2, 2, 2, 2, 24, 24, 24, 24, 24, 24, 24, 24, 24,
- 24, 2, 2, 2, 2, 0, 2, 18, 18, 2, 18, 2, 18, 18, 18, 18,
- 18, 2, 18, 18, 18, 18, 2, 18, 2, 18, 18, 18, 2, 2, 18, 2,
- 18, 2, 25, 25, 25, 25, 2, 25, 25, 25, 25, 2, 2, 2, 25, 2,
- 25, 25, 25, 0, 0, 0, 0, 25, 25, 2, 33, 33, 33, 33, 8, 8,
- 8, 8, 8, 8, 2, 8, 2, 8, 2, 2, 8, 8, 8, 0, 12, 12,
- 12, 12, 30, 30, 30, 30, 30, 2, 30, 30, 30, 30, 2, 2, 30, 30,
- 30, 2, 2, 30, 30, 30, 30, 2, 2, 2, 29, 29, 29, 29, 29, 29,
- 2, 2, 28, 28, 28, 28, 34, 34, 34, 34, 34, 2, 2, 2, 35, 35,
- 35, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 2, 2, 2, 45, 45,
- 45, 45, 45, 45, 2, 2, 2, 2, 2, 45, 44, 44, 44, 44, 44, 0,
- 0, 2, 43, 43, 43, 43, 46, 46, 46, 46, 46, 2, 46, 46, 31, 31,
- 31, 31, 31, 31, 2, 2, 32, 32, 0, 0, 32, 0, 32, 32, 32, 32,
- 32, 32, 32, 32, 2, 2, 32, 2, 2, 2, 32, 32, 32, 2, 28, 28,
- 2, 2, 48, 48, 48, 48, 48, 48, 48, 2, 48, 2, 2, 2, 52, 52,
- 52, 52, 52, 52, 2, 2, 52, 2, 2, 2, 58, 58, 58, 58, 58, 58,
- 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 54, 54, 54, 54, 2, 2,
- 54, 54, 91, 91, 91, 91, 91, 91, 91, 2, 91, 2, 2, 91, 91, 91,
- 2, 2, 1, 1, 1, 2, 62, 62, 62, 62, 62, 2, 2, 2, 62, 62,
- 62, 2, 76, 76, 76, 76, 93, 93, 93, 93, 70, 70, 70, 70, 2, 2,
- 2, 70, 70, 70, 2, 2, 2, 70, 70, 70, 73, 73, 73, 73, 6, 2,
- 2, 2, 8, 8, 8, 2, 2, 8, 8, 8, 1, 1, 1, 0, 1, 0,
- 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 2, 19, 19,
- 9, 9, 9, 9, 9, 6, 19, 9, 9, 9, 9, 9, 19, 19, 9, 9,
- 9, 19, 6, 19, 19, 19, 19, 19, 19, 9, 9, 9, 2, 2, 2, 9,
- 2, 9, 2, 9, 9, 9, 1, 1, 0, 0, 0, 2, 0, 0, 0, 19,
- 2, 2, 0, 0, 0, 19, 0, 0, 0, 2, 19, 2, 2, 2, 0, 2,
- 2, 2, 1, 2, 2, 2, 0, 0, 9, 0, 0, 0, 19, 19, 27, 27,
- 27, 27, 2, 2, 0, 0, 0, 0, 2, 0, 56, 56, 56, 56, 2, 55,
- 55, 55, 61, 61, 61, 61, 2, 2, 2, 61, 61, 2, 2, 2, 0, 0,
- 2, 2, 13, 13, 13, 13, 13, 13, 2, 13, 13, 13, 2, 2, 0, 13,
- 0, 13, 0, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 2, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 1, 1, 0, 0, 15,
- 15, 15, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 2, 26,
- 26, 26, 26, 26, 26, 26, 2, 12, 12, 12, 12, 12, 12, 2, 12, 12,
- 12, 0, 39, 39, 39, 39, 39, 2, 2, 2, 39, 39, 39, 2, 86, 86,
- 86, 86, 77, 77, 77, 77, 79, 79, 79, 79, 19, 19, 19, 2, 19, 19,
- 2, 19, 2, 19, 19, 19, 19, 19, 2, 2, 2, 2, 19, 19, 60, 60,
- 60, 60, 60, 2, 2, 2, 65, 65, 65, 65, 75, 75, 75, 75, 75, 75,
- 2, 2, 2, 2, 75, 75, 69, 69, 69, 69, 69, 69, 0, 69, 74, 74,
- 74, 74, 2, 2, 2, 74, 12, 2, 2, 2, 84, 84, 84, 84, 84, 84,
- 2, 0, 84, 84, 2, 2, 2, 2, 84, 84, 33, 33, 33, 2, 68, 68,
- 68, 68, 68, 68, 68, 2, 68, 68, 2, 2, 92, 92, 92, 92, 92, 92,
- 92, 2, 2, 2, 2, 92, 87, 87, 87, 87, 87, 87, 87, 2, 19, 9,
- 19, 19, 19, 19, 0, 0, 87, 87, 2, 2, 2, 2, 2, 12, 2, 2,
- 2, 4, 14, 2, 14, 2, 14, 14, 2, 14, 14, 2, 14, 14, 2, 2,
- 2, 3, 3, 3, 0, 0, 2, 2, 3, 3, 1, 1, 6, 6, 3, 2,
- 3, 3, 3, 2, 2, 0, 2, 0, 0, 0, 0, 0, 17, 17, 17, 17,
- 0, 0, 2, 2, 12, 12, 49, 49, 49, 49, 2, 49, 49, 49, 49, 49,
- 49, 2, 49, 49, 2, 49, 49, 49, 2, 2, 9, 2, 2, 2, 0, 1,
- 2, 2, 71, 71, 71, 71, 71, 2, 2, 2, 67, 67, 67, 67, 67, 2,
- 2, 2, 42, 42, 42, 42, 2, 42, 42, 42, 41, 41, 41, 41, 41, 41,
- 41, 2,118,118,118,118,118,118,118, 2, 53, 53, 53, 53, 53, 53,
- 2, 53, 59, 59, 59, 59, 59, 59, 2, 2, 40, 40, 40, 40, 51, 51,
- 51, 51, 50, 50, 50, 50, 50, 50, 2, 2,135,135,135,135,106,106,
- 106,106,104,104,104,104, 2, 2, 2,104,161,161,161,161,161,161,
- 161, 2,161,161, 2,161,161, 2, 2, 2,110,110,110,110,110,110,
- 110, 2,110,110, 2, 2, 19, 2, 19, 19, 47, 47, 47, 47, 47, 47,
- 2, 2, 47, 2, 47, 47, 47, 47, 2, 47, 47, 2, 2, 2, 47, 2,
- 2, 47, 81, 81, 81, 81, 81, 81, 2, 81,120,120,120,120,116,116,
- 116,116,116,116,116, 2, 2, 2, 2,116,128,128,128,128,128,128,
- 128, 2,128,128, 2, 2, 2, 2, 2,128, 66, 66, 66, 66, 2, 2,
- 2, 66, 72, 72, 72, 72, 72, 72, 2, 2, 2, 2, 2, 72, 98, 98,
- 98, 98, 97, 97, 97, 97, 2, 2, 97, 97, 57, 57, 57, 57, 2, 57,
- 57, 2, 2, 57, 57, 57, 57, 57, 2, 2, 57, 57, 57, 2, 2, 2,
- 2, 57, 57, 2, 2, 2, 88, 88, 88, 88,117,117,117,117,112,112,
- 112,112,112,112,112, 2, 2, 2, 2,112, 78, 78, 78, 78, 78, 78,
- 2, 2, 2, 78, 78, 78, 83, 83, 83, 83, 83, 83, 2, 2, 82, 82,
- 82, 82, 82, 82, 82, 2,122,122,122,122,122,122, 2, 2, 2,122,
- 122,122,122, 2, 2, 2, 89, 89, 89, 89, 89, 2, 2, 2,130,130,
- 130,130,130,130,130, 2, 2, 2,130,130,144,144,144,144,144,144,
- 2, 2,156,156,156,156,156,156, 2,156,156,156, 2, 2, 2, 3,
- 3, 3,147,147,147,147,148,148,148,148,148,148, 2, 2,158,158,
- 158,158,158,158, 2, 2,153,153,153,153,149,149,149,149,149,149,
- 149, 2, 94, 94, 94, 94, 94, 94, 2, 2, 2, 2, 94, 94, 2, 2,
- 2, 94, 85, 85, 85, 85, 85, 85, 85, 2, 2, 85, 2, 2,101,101,
- 101,101,101, 2, 2, 2,101,101, 2, 2, 96, 96, 96, 96, 96, 2,
- 96, 96,111,111,111,111,111,111,111, 2,100,100,100,100,108,108,
- 108,108,108,108, 2,108,108,108, 2, 2,129,129,129,129,129,129,
- 129, 2,129, 2,129,129,129,129, 2,129,129,129, 2, 2,109,109,
- 109,109,109,109,109, 2,109,109, 2, 2,107,107,107,107, 2,107,
- 107,107,107, 2, 2,107,107, 2,107,107,107,107, 2, 1,107,107,
- 2, 2,107, 2, 2, 2, 2, 2, 2,107, 2, 2,107,107,137,137,
- 137,137, 2,137,137,137,137,137, 2, 2,124,124,124,124,124,124,
- 2, 2,123,123,123,123,123,123, 2, 2,114,114,114,114,114, 2,
- 2, 2,114,114, 2, 2,102,102,102,102,102,102, 2, 2,126,126,
- 126,126,126,126,126, 2, 2,126,126,126,142,142,142,142,125,125,
- 125,125,125,125,125, 2, 2, 2, 2,125,154,154,154,154,154,154,
- 154, 2, 2,154, 2, 2, 2,154,154, 2,154,154, 2,154,154, 2,
- 2,154,154,154, 2, 2,150,150,150,150, 2, 2,150,150,150, 2,
- 2, 2,141,141,141,141,140,140,140,140,140,140,140, 2,121,121,
- 121,121,121, 2, 2, 2, 7, 7, 2, 2,133,133,133,133,133, 2,
- 133,133,133,133,133, 2,133,133, 2, 2,133, 2, 2, 2,134,134,
- 134,134, 2, 2,134,134, 2,134,134,134,134,134,134, 2,138,138,
- 138,138,138,138,138, 2,138,138, 2,138, 2, 2,138, 2,138,138,
- 2, 2,143,143,143,143,143,143, 2,143,143, 2,143,143,143,143,
- 143, 2,143, 2, 2, 2,143,143, 2, 2,145,145,145,145,145, 2,
- 2, 2,163,163,163,163,163, 2,163,163,163,163,163, 2, 2, 2,
- 163,163,163,163, 2, 2, 86, 2, 2, 2, 63, 63, 63, 63, 63, 63,
- 2, 2, 63, 63, 63, 2, 63, 2, 2, 2,157,157,157,157,157,157,
- 157, 2, 80, 80, 80, 80, 80, 80, 2, 2,127,127,127,127,127,127,
- 127, 2, 79, 2, 2, 2,115,115,115,115,115,115,115, 2,115,115,
- 2, 2, 2, 2,115,115,159,159,159,159,159,159,159, 2,159,159,
- 2, 2,103,103,103,103,103,103, 2, 2,119,119,119,119,119,119,
- 2, 2,119,119, 2,119, 2,119,119,119,146,146,146,146,146,146,
- 146, 2, 99, 99, 99, 99, 99, 99, 99, 2, 2, 2, 2, 99,136,139,
- 13, 13,155, 2, 2, 2,136,136,136,136,155,155,155,155,155,155,
- 2, 2,136, 2, 2, 2, 2, 17, 17, 17, 2, 17, 17, 2, 17, 15,
- 15, 15, 17, 17, 17, 2, 2, 2, 15, 2, 2, 17, 2, 2,139,139,
- 139,139,105,105,105,105,105,105,105, 2,105, 2, 2, 2,105,105,
- 2, 2, 1, 1, 2, 2, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0,
- 1, 1, 2, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 2,131,131,
- 131,131, 2, 2, 2,131, 2,131,131,131, 56, 56, 56, 2, 56, 2,
- 2, 56, 56, 56, 2, 56, 56, 2, 56, 56, 6, 6, 2, 2, 2, 2,
- 2, 6,151,151,151,151,151, 2, 2, 2,151,151, 2, 2, 2, 2,
- 151,151,160,160,160,160,160,160,160, 2,152,152,152,152,152,152,
- 2, 2, 2, 2, 2,152,164,164,164,164,164,164, 2, 2, 2, 30,
- 30, 2,113,113,113,113,113, 2, 2,113,113,113,113, 2,132,132,
- 132,132,132,132, 2, 2, 2, 2,132,132, 2, 3, 3, 2, 3, 2,
- 2, 3, 2, 3, 2, 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3,
- 2, 3, 15, 0, 0, 2, 13, 2, 2, 2, 13, 13, 13, 2, 2, 0,
- 2, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 10,
- 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9, 9, 9, 9, 9,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,177, 0, 1, 2, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 6, 7, 8, 3,
+ 3, 3, 3, 3, 9, 10, 11, 12, 13, 3, 3, 3, 3, 3, 3, 3,
+ 3, 14, 3, 15, 3, 3, 3, 3, 3, 3, 16, 17, 18, 19, 20, 21,
+ 3, 3, 3, 22, 23, 24, 3, 3, 3, 3, 3, 3, 25, 3, 3, 3,
+ 3, 3, 3, 3, 3, 26, 3, 3, 27, 28, 0, 1, 0, 0, 0, 0,
+ 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 9, 0, 9, 0, 0,
+ 0, 0, 0, 0, 0, 10, 11, 12, 13, 0, 0, 14, 15, 16, 6, 0,
+ 17, 18, 19, 19, 19, 20, 21, 22, 23, 24, 19, 25, 0, 26, 27, 19,
+ 19, 28, 29, 30, 0, 31, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,
+ 0, 19, 28, 0, 32, 33, 9, 34, 35, 19, 0, 0, 36, 37, 38, 39,
+ 40, 19, 0, 41, 42, 43, 44, 31, 0, 1, 45, 42, 0, 0, 0, 0,
+ 0, 32, 14, 14, 0, 0, 0, 0, 14, 0, 0, 46, 47, 47, 47, 47,
+ 48, 49, 47, 47, 47, 47, 50, 51, 52, 53, 43, 21, 0, 0, 0, 0,
+ 0, 0, 0, 54, 6, 55, 0, 14, 19, 1, 0, 0, 0, 0, 56, 57,
+ 0, 0, 0, 0, 0, 19, 58, 31, 0, 0, 0, 0, 0, 0, 0, 59,
+ 14, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 60,
+ 61, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3,
+ 0, 4, 5, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 1, 1, 0,
+ 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 8, 9, 10, 11, 12, 0,
+ 0, 0, 13, 0, 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, 1, 0,
+ 0, 18, 19, 0, 0, 0, 20, 0, 0, 0, 1, 1, 1, 1, 0, 1,
+ 1, 1, 1, 1, 1, 1, 0, 8, 21, 9, 0, 0, 22, 0, 0, 0,
+ 0, 1, 0, 23, 24, 25, 0, 0, 26, 0, 0, 0, 8, 21, 27, 0,
+ 1, 0, 0, 1, 1, 1, 1, 0, 1, 28, 29, 30, 0, 31, 32, 20,
+ 1, 1, 0, 0, 0, 8, 21, 9, 1, 4, 5, 0, 0, 0, 33, 9,
+ 0, 1, 1, 1, 0, 8, 21, 21, 21, 21, 34, 1, 35, 21, 21, 21,
+ 9, 36, 0, 0, 37, 38, 1, 0, 39, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 0, 8, 21, 9, 1, 0, 0, 0, 40, 0, 8, 21, 21, 21,
+ 21, 21, 21, 21, 21, 9, 0, 1, 1, 1, 1, 8, 21, 21, 21, 9,
+ 0, 0, 0, 41, 0, 42, 43, 0, 0, 0, 1, 44, 0, 0, 0, 45,
+ 8, 9, 1, 0, 0, 0, 8, 21, 21, 21, 9, 0, 1, 0, 1, 1,
+ 8, 21, 21, 9, 0, 4, 5, 8, 9, 1, 0, 0, 0, 1, 2, 3,
+ 4, 5, 5, 5, 5, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 9, 16, 17, 18, 9, 19, 20, 21, 22, 23, 24, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 25, 26, 27, 5, 28, 29, 5, 30, 31, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16, 17,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 19, 20, 9, 21, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 22, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 32, 0, 0, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1, 29, 30, 31,
+ 32, 32, 33, 32, 32, 32, 34, 32, 32, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 44, 44, 44,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 46, 46,
+ 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 44, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 95,
+ 95, 96, 97, 98, 56, 56, 56, 56, 56, 56, 56, 56, 56, 99,100,100,
+ 100,100,101,100,100,100,100,100,100,100,100,100,100,100,100,100,
+ 100,102,103,103,104, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,105,
+ 56, 56, 56, 56, 56, 56,106,106,107,108, 56,109,110,111,112,112,
+ 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,
+ 112,112,112,112,112,113,112,112,112,114,115,116, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,117,118,119,
+ 120, 56, 56, 56, 56, 56, 56, 56, 56, 56,121, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,122, 32,123,124,125,126,
+ 127,128,129,130,131,132,133,133,134, 56, 56, 56, 56,135,136,137,
+ 138, 56,139,140, 56,141,142,143, 56, 56,144,145,146, 56,147,148,
+ 149, 32, 32, 32,150,151,152, 32,153,154, 56, 56, 56, 56, 44, 44,
+ 44, 44, 44, 44,155, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
+ 44, 44, 44, 44, 44,156,157, 44, 44, 44, 44, 44, 44, 44, 44, 44,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,158, 44, 44, 44,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44,159, 44, 44,160, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 44, 44,161, 56, 56, 56, 56, 56, 44, 44,
+ 44,162, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
+ 44,163, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,164,165,
+ 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0,
+ 19, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 0, 19, 0,
+ 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0,
+ 26, 26, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9,
+ 9, 9, 0, 9, 9, 9, 2, 2, 9, 9, 9, 9, 0, 9, 2, 2,
+ 2, 2, 9, 0, 9, 0, 9, 9, 9, 2, 9, 2, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9,
+ 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 6, 2, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 2,
+ 2, 2, 2, 2, 2, 2, 14, 14, 14, 2, 2, 2, 2, 14, 14, 14,
+ 14, 14, 14, 2, 2, 2, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3,
+ 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 3,
+ 3, 3, 3, 3, 3, 3, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 37, 37, 2, 37, 37, 37, 37, 2, 2, 37, 37, 37, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38, 2, 2, 2, 2, 2, 2, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 2, 2, 64, 64, 64, 90, 90,
+ 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 2, 2, 90, 90,
+ 90, 90, 90, 90, 90, 2, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
+ 95, 95, 2, 2, 95, 2, 37, 37, 37, 2, 2, 2, 2, 2, 3, 3,
+ 3, 3, 3, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, 3,
+ 0, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1,
+ 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 5, 5,
+ 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 5, 5, 2,
+ 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2,
+ 5, 5, 5, 5, 5, 5, 5, 2, 5, 2, 2, 2, 5, 5, 5, 5,
+ 2, 2, 5, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, 2, 2, 2,
+ 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 5, 5, 2, 5, 5, 5,
+ 5, 5, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 11,
+ 11, 11, 2, 11, 11, 11, 11, 11, 11, 2, 2, 2, 2, 11, 11, 2,
+ 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2,
+ 11, 11, 11, 11, 11, 11, 11, 2, 11, 11, 2, 11, 11, 2, 11, 11,
+ 2, 2, 11, 2, 11, 11, 11, 2, 2, 11, 11, 11, 2, 2, 2, 11,
+ 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, 11, 2, 11, 2, 2, 2,
+ 2, 2, 2, 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 2, 10,
+ 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10,
+ 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2,
+ 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 2, 10, 10, 10, 10, 10,
+ 2, 2, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, 2, 2, 10, 2,
+ 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 2, 2, 10, 10, 10, 10,
+ 2, 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 10, 10, 10, 2, 21,
+ 21, 21, 2, 21, 21, 21, 21, 21, 21, 21, 21, 2, 2, 21, 21, 2,
+ 2, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 2,
+ 21, 21, 21, 21, 21, 21, 21, 2, 21, 21, 2, 21, 21, 21, 21, 21,
+ 2, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 21, 2, 2, 2, 2,
+ 2, 2, 2, 21, 21, 21, 2, 2, 2, 2, 21, 21, 2, 21, 21, 21,
+ 21, 21, 2, 2, 21, 21, 2, 2, 22, 22, 2, 22, 22, 22, 22, 22,
+ 22, 2, 2, 2, 22, 22, 22, 2, 22, 22, 22, 22, 2, 2, 2, 22,
+ 22, 2, 22, 2, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 2, 2, 2, 2, 22, 22, 22, 2,
+ 2, 2, 2, 2, 2, 22, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22,
+ 22, 2, 2, 2, 2, 2, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 2, 23, 23, 23, 2, 23, 23, 23, 23, 23, 23, 23, 23,
+ 2, 2, 23, 23, 23, 23, 23, 2, 23, 23, 23, 23, 2, 2, 2, 2,
+ 2, 2, 2, 23, 23, 2, 23, 23, 23, 2, 2, 23, 2, 2, 23, 23,
+ 23, 23, 2, 2, 23, 23, 2, 2, 2, 2, 2, 2, 2, 23, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 2,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 16,
+ 2, 2, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 2, 2, 2, 2,
+ 2, 2, 2, 16, 16, 2, 16, 16, 16, 16, 2, 2, 16, 16, 2, 16,
+ 16, 16, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 2, 20, 20, 20, 2, 20, 20, 20, 20, 20, 20, 2, 2,
+ 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 2, 2, 20, 20, 2, 36,
+ 36, 36, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 2, 2, 2, 36, 36, 36, 36, 36, 36, 36, 36,
+ 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2, 2,
+ 36, 2, 2, 2, 2, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2,
+ 2, 2, 2, 2, 36, 36, 2, 2, 36, 36, 36, 2, 2, 2, 2, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 2, 2, 2, 2, 0, 24, 24, 24, 24, 2, 2, 2, 2, 2, 18,
+ 18, 2, 18, 2, 18, 18, 18, 18, 18, 2, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18, 18,
+ 18, 18, 18, 18, 2, 2, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18,
+ 18, 18, 18, 18, 18, 2, 18, 18, 2, 2, 18, 18, 18, 18, 25, 25,
+ 25, 25, 25, 25, 25, 25, 2, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 2, 2, 2, 25, 25, 25, 25, 25, 2, 25, 25, 25, 25,
+ 25, 25, 25, 0, 0, 0, 0, 25, 25, 2, 2, 2, 2, 2, 33, 33,
+ 33, 33, 33, 33, 33, 33, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 2, 8, 2, 2, 2, 2, 2, 8, 2, 2, 8, 8,
+ 8, 0, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 2, 30, 30, 30, 30, 2, 2, 30, 30,
+ 30, 30, 30, 30, 30, 2, 30, 30, 30, 2, 2, 30, 30, 30, 30, 30,
+ 30, 30, 30, 2, 2, 2, 30, 30, 2, 2, 2, 2, 2, 2, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 2, 2, 28, 28,
+ 28, 28, 28, 28, 28, 28, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 2, 2, 2, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 0, 0, 0, 35, 35, 35, 2, 2, 2, 2, 2, 2, 2, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
+ 44, 44, 44, 0, 0, 2, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 2, 2, 2, 2, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 46, 46, 2, 46, 46, 46, 2, 46, 46, 2, 2, 2, 2, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 2, 2, 31, 31,
+ 2, 2, 2, 2, 2, 2, 32, 32, 0, 0, 32, 0, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 2, 2, 2, 2, 2, 2, 32, 2,
+ 2, 2, 2, 2, 2, 2, 32, 32, 32, 2, 2, 2, 2, 2, 28, 28,
+ 28, 28, 28, 28, 2, 2, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 2, 48, 48, 48, 48, 2, 2, 2, 2, 48, 2,
+ 2, 2, 48, 48, 48, 48, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 2, 2, 52, 52, 52, 52, 52, 2, 2, 2, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2, 2, 2, 2, 58, 58,
+ 2, 2, 2, 2, 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 2, 2, 54, 54, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 2, 91, 91,
+ 91, 91, 91, 2, 2, 91, 91, 91, 2, 2, 2, 2, 2, 2, 91, 91,
+ 91, 91, 91, 91, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 2, 62, 62, 76, 76,
+ 76, 76, 76, 76, 76, 76, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 2, 2, 2, 2, 2, 2, 2, 2, 93, 93, 93, 93, 70, 70,
+ 70, 70, 70, 70, 70, 70, 2, 2, 2, 70, 70, 70, 70, 70, 70, 70,
+ 2, 2, 2, 70, 70, 70, 73, 73, 73, 73, 73, 73, 73, 73, 6, 6,
+ 6, 2, 2, 2, 2, 2, 8, 8, 8, 2, 2, 8, 8, 8, 1, 1,
+ 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1,
+ 0, 2, 2, 2, 2, 2, 19, 19, 19, 19, 19, 19, 9, 9, 9, 9,
+ 9, 6, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 9, 9, 9, 9,
+ 19, 19, 19, 19, 9, 9, 9, 9, 9, 19, 19, 19, 19, 19, 6, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 9, 9,
+ 9, 9, 9, 9, 2, 2, 2, 9, 2, 9, 2, 9, 2, 9, 9, 9,
+ 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 2, 2, 9, 9, 9, 9,
+ 9, 9, 2, 9, 9, 9, 2, 2, 9, 9, 9, 2, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 19, 2, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 2, 19, 19,
+ 19, 19, 19, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 1, 2,
+ 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 19, 0,
+ 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0,
+ 0, 2, 2, 2, 2, 2, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 56, 56,
+ 56, 56, 56, 56, 56, 56, 55, 55, 55, 55, 2, 2, 2, 2, 2, 55,
+ 55, 55, 55, 55, 55, 55, 61, 61, 61, 61, 61, 61, 61, 61, 2, 2,
+ 2, 2, 2, 2, 2, 61, 61, 2, 2, 2, 2, 2, 2, 2, 0, 0,
+ 0, 0, 0, 0, 2, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, 2, 2, 2, 13, 13,
+ 13, 13, 13, 13, 2, 2, 0, 0, 0, 0, 0, 13, 0, 13, 0, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 13, 13,
+ 13, 13, 0, 0, 0, 0, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 1,
+ 1, 0, 0, 15, 15, 15, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 17, 17, 17, 2, 2,
+ 2, 2, 2, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 2, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 2, 2, 2,
+ 2, 2, 2, 2, 2, 0, 12, 12, 12, 12, 12, 12, 12, 0, 17, 17,
+ 17, 17, 17, 17, 17, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 2, 2, 2, 39, 39, 39, 39, 39, 39, 39, 2, 86, 86,
+ 86, 86, 86, 86, 86, 86, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 2, 2, 2, 2, 79, 79, 79, 79, 79, 79, 79, 79, 0, 0,
+ 19, 19, 19, 19, 19, 19, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 2, 2, 19, 19, 2, 19, 2, 19, 19, 19, 2, 2,
+ 19, 19, 19, 19, 19, 19, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 2, 2, 2, 65, 65, 65, 65, 65, 65, 65, 65, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 2, 2, 2, 2,
+ 2, 2, 2, 2, 75, 75, 75, 75, 2, 2, 2, 2, 2, 2, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 0, 69, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 74, 12, 12, 12, 12, 12, 2, 2, 2, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 2, 0, 84, 84,
+ 2, 2, 2, 2, 84, 84, 33, 33, 33, 33, 33, 33, 33, 2, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 2, 68, 68,
+ 68, 68, 68, 68, 2, 2, 68, 68, 2, 2, 68, 68, 68, 68, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 2, 2, 2, 2, 2, 2, 2,
+ 2, 92, 92, 92, 92, 92, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
+ 87, 87, 87, 87, 87, 2, 2, 30, 30, 30, 30, 30, 30, 2, 19, 19,
+ 19, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 19, 19, 19, 19,
+ 0, 0, 2, 2, 2, 2, 87, 87, 87, 87, 87, 87, 2, 2, 87, 87,
+ 2, 2, 2, 2, 2, 2, 12, 12, 12, 12, 2, 2, 2, 2, 2, 2,
+ 2, 12, 12, 12, 12, 12, 13, 13, 2, 2, 2, 2, 2, 2, 19, 19,
+ 19, 19, 19, 19, 19, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2,
+ 2, 2, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 14, 14,
+ 14, 14, 14, 2, 14, 2, 14, 14, 2, 14, 14, 2, 14, 14, 3, 3,
+ 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 0, 0, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2,
+ 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 6, 6, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3,
+ 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17,
+ 17, 17, 17, 17, 0, 0, 2, 2, 12, 12, 12, 12, 12, 12, 2, 2,
+ 12, 12, 12, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 2, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 2, 49, 49, 49, 2, 49, 49, 2, 49, 49, 49,
+ 49, 49, 49, 49, 2, 2, 49, 49, 49, 2, 2, 2, 2, 2, 0, 0,
+ 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0,
+ 0, 0, 0, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 0, 0,
+ 0, 0, 0, 1, 2, 2, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 2, 2, 2, 67, 67, 67, 67, 67, 67, 67, 67, 67, 2,
+ 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 2, 2, 2, 2, 2,118,118,118,118,118,118,118,118,118,118,
+ 118, 2, 2, 2, 2, 2, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 2, 53, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 2, 2, 2, 2, 59, 59, 59, 59, 59, 59, 2, 2, 40, 40,
+ 40, 40, 40, 40, 40, 40, 51, 51, 51, 51, 51, 51, 51, 51, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 2, 2, 50, 50,
+ 2, 2, 2, 2, 2, 2,135,135,135,135,135,135,135,135,135,135,
+ 135,135, 2, 2, 2, 2,106,106,106,106,106,106,106,106,104,104,
+ 104,104,104,104,104,104,104,104,104,104, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2,104,161,161,161,161,161,161,161,161,161,161,
+ 161, 2,161,161,161,161,161,161,161, 2,161,161, 2,161,161,161,
+ 2,161,161,161,161,161,161,161, 2,161,161, 2, 2, 2,170,170,
+ 170,170,170,170,170,170,170,170,170,170, 2, 2, 2, 2,110,110,
+ 110,110,110,110,110,110,110,110,110,110,110,110,110, 2,110,110,
+ 110,110,110,110, 2, 2, 19, 19, 19, 19, 19, 19, 2, 19, 19, 2,
+ 19, 19, 19, 19, 19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 47, 47,
+ 47, 47, 47, 47, 2, 2, 47, 2, 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 2, 47, 47, 2,
+ 2, 2, 47, 2, 2, 47, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 2, 81,120,120,120,120,120,120,120,120,116,116,
+ 116,116,116,116,116,116,116,116,116,116,116,116,116, 2, 2, 2,
+ 2, 2, 2, 2, 2,116,128,128,128,128,128,128,128,128,128,128,
+ 128, 2,128,128, 2, 2, 2, 2, 2,128,128,128,128,128, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 2, 2, 2, 66, 72, 72,
+ 72, 72, 72, 72, 72, 72, 72, 72, 2, 2, 2, 2, 2, 72, 98, 98,
+ 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 2, 2,
+ 2, 2, 97, 97, 97, 97, 2, 2, 97, 97, 97, 97, 97, 97, 57, 57,
+ 57, 57, 2, 57, 57, 2, 2, 2, 2, 2, 57, 57, 57, 57, 57, 57,
+ 57, 57, 2, 57, 57, 57, 2, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 2, 2, 57, 57,
+ 57, 2, 2, 2, 2, 57, 57, 2, 2, 2, 2, 2, 2, 2, 88, 88,
+ 88, 88, 88, 88, 88, 88,117,117,117,117,117,117,117,117,112,112,
+ 112,112,112,112,112,112,112,112,112,112,112,112,112, 2, 2, 2,
+ 2,112,112,112,112,112, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 2, 2, 2, 78, 78, 78, 78, 78, 78, 78, 83, 83,
+ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 2, 2, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 2, 2, 2, 2, 2,122,122,
+ 122,122,122,122,122,122,122,122, 2, 2, 2, 2, 2, 2, 2,122,
+ 122,122,122, 2, 2, 2, 2,122,122,122,122,122,122,122, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 2, 2, 2, 2, 2, 2, 2,130,130,
+ 130,130,130,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2,
+ 130,130,130,130,130,130,144,144,144,144,144,144,144,144,144,144,
+ 2, 2, 2, 2, 2, 2,165,165,165,165,165,165,165,165,165,165,
+ 165,165,165,165, 2, 2, 2,165,165,165,165,165,165,165, 2, 2,
+ 2, 2, 2, 2,165,165,156,156,156,156,156,156,156,156,156,156,
+ 2,156,156,156, 2, 2,156,156, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,147,147,
+ 147,147,147,147,147,147,148,148,148,148,148,148,148,148,148,148,
+ 2, 2, 2, 2, 2, 2,158,158,158,158,158,158,158,158,158,158,
+ 2, 2, 2, 2, 2, 2,153,153,153,153,153,153,153,153,153,153,
+ 153,153, 2, 2, 2, 2,149,149,149,149,149,149,149,149,149,149,
+ 149,149,149,149,149, 2, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
+ 94, 94, 94, 94, 2, 2, 2, 2, 94, 94, 94, 94, 94, 94, 2, 2,
+ 2, 2, 2, 2, 2, 94, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85, 2, 2,101,101,
+ 101,101,101,101,101,101,101, 2, 2, 2, 2, 2, 2, 2,101,101,
+ 2, 2, 2, 2, 2, 2, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
+ 96, 96, 96, 2, 96, 96,111,111,111,111,111,111,111,111,111,111,
+ 111,111,111,111,111, 2,100,100,100,100,100,100,100,100, 2, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2,108,108,
+ 108,108,108,108,108,108,108,108, 2,108,108,108,108,108,108,108,
+ 2, 2, 2, 2, 2, 2,129,129,129,129,129,129,129, 2,129, 2,
+ 129,129,129,129, 2,129,129,129,129,129,129,129,129,129,129,129,
+ 129,129,129,129, 2,129,129,129, 2, 2, 2, 2, 2, 2,109,109,
+ 109,109,109,109,109,109,109,109,109, 2, 2, 2, 2, 2,109,109,
+ 2, 2, 2, 2, 2, 2,107,107,107,107, 2,107,107,107,107,107,
+ 107,107,107, 2, 2,107,107, 2, 2,107,107,107,107,107,107,107,
+ 107,107,107,107,107,107,107, 2,107,107,107,107,107,107,107, 2,
+ 107,107, 2,107,107,107,107,107, 2, 1,107,107,107,107,107, 2,
+ 2,107,107,107, 2, 2,107, 2, 2, 2, 2, 2, 2,107, 2, 2,
+ 2, 2, 2,107,107,107,107,107,107,107, 2, 2,107,107,107,107,
+ 107,107,107, 2, 2, 2,171,171,171,171,171,171,171,171,171,171,
+ 2,171, 2, 2,171, 2,171,171,171,171,171,171, 2,171,171, 2,
+ 171, 2, 2,171, 2,171,171,171,171, 2,171,171,171,171,171, 2,
+ 2, 2, 2, 2, 2, 2, 2,171,171, 2, 2, 2, 2, 2,137,137,
+ 137,137,137,137,137,137,137,137,137,137, 2,137,137,137,137,137,
+ 2, 2, 2, 2, 2, 2,124,124,124,124,124,124,124,124,124,124,
+ 2, 2, 2, 2, 2, 2,123,123,123,123,123,123,123,123,123,123,
+ 123,123,123,123, 2, 2,114,114,114,114,114,114,114,114,114,114,
+ 114,114,114, 2, 2, 2,114,114, 2, 2, 2, 2, 2, 2, 32, 32,
+ 32, 32, 32, 2, 2, 2,102,102,102,102,102,102,102,102,102,102,
+ 2, 2, 2, 2, 2, 2, 33, 33, 33, 33, 2, 2, 2, 2,126,126,
+ 126,126,126,126,126,126,126,126,126, 2, 2,126,126,126,126,126,
+ 126,126, 2, 2, 2, 2,126,126,126,126,126,126,126, 2,142,142,
+ 142,142,142,142,142,142,142,142,142,142, 2, 2, 2, 2,125,125,
+ 125,125,125,125,125,125,125,125,125, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2,125,154,154,154,154,154,154,154, 2, 2,154,
+ 2, 2,154,154,154,154,154,154,154,154, 2,154,154, 2,154,154,
+ 154,154,154,154,154,154,154,154,154,154,154,154, 2,154,154, 2,
+ 2,154,154,154,154,154,154,154, 2, 2, 2, 2, 2, 2,150,150,
+ 150,150,150,150,150,150, 2, 2,150,150,150,150,150,150,150,150,
+ 150,150,150, 2, 2, 2,141,141,141,141,141,141,141,141,140,140,
+ 140,140,140,140,140,140,140,140,140, 2, 2, 2, 2, 2,121,121,
+ 121,121,121,121,121,121,121, 2, 2, 2, 2, 2, 2, 2, 7, 7,
+ 2, 2, 2, 2, 2, 2,169,169,169,169,169,169,169,169,169,169,
+ 2, 2, 2, 2, 2, 2,133,133,133,133,133,133,133,133,133, 2,
+ 133,133,133,133,133,133,133,133,133,133,133,133,133, 2,133,133,
+ 133,133,133,133, 2, 2,133,133,133,133,133, 2, 2, 2,134,134,
+ 134,134,134,134,134,134, 2, 2,134,134,134,134,134,134, 2,134,
+ 134,134,134,134,134,134,134,134,134,134,134,134,134, 2,138,138,
+ 138,138,138,138,138, 2,138,138, 2,138,138,138,138,138,138,138,
+ 138,138,138,138,138,138, 2, 2,138, 2,138,138, 2,138,138,138,
+ 2, 2, 2, 2, 2, 2,143,143,143,143,143,143, 2,143,143, 2,
+ 143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,
+ 143,143,143,143,143, 2,143,143, 2,143,143,143,143,143,143, 2,
+ 2, 2, 2, 2, 2, 2,143,143, 2, 2, 2, 2, 2, 2,145,145,
+ 145,145,145,145,145,145,145, 2, 2, 2, 2, 2, 2, 2,163,163,
+ 163,163,163,163,163,163,163, 2,163,163,163,163,163,163,163,163,
+ 163, 2, 2, 2,163,163,163,163,163, 2, 2, 2, 2, 2, 86, 2,
+ 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 22, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
+ 2, 2, 2, 2, 2, 2, 63, 63, 63, 63, 63, 63, 63, 2, 63, 63,
+ 63, 63, 63, 2, 2, 2, 63, 63, 63, 63, 2, 2, 2, 2,157,157,
+ 157,157,157,157,157,157,157,157,157, 2, 2, 2, 2, 2, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 2, 2, 80, 80,
+ 80, 2, 2, 2, 2, 2,127,127,127,127,127,127,127,127,127,127,
+ 127,127,127,127,127, 2,166,166,166,166,166,166,166,166,166,166,
+ 2, 2, 2, 2, 2, 2, 79, 2, 2, 2, 2, 2, 2, 2,115,115,
+ 115,115,115,115,115,115,115,115,115,115,115,115,115, 2,115,115,
+ 2, 2, 2, 2,115,115,159,159,159,159,159,159,159,159,159,159,
+ 159,159,159,159,159, 2,159,159, 2, 2, 2, 2, 2, 2,103,103,
+ 103,103,103,103,103,103,103,103,103,103,103,103, 2, 2,119,119,
+ 119,119,119,119,119,119,119,119,119,119,119,119, 2, 2,119,119,
+ 2,119,119,119,119,119, 2, 2, 2, 2, 2,119,119,119,167,167,
+ 167,167,167,167,167,167,167,167, 2, 2, 2, 2, 2, 2,146,146,
+ 146,146,146,146,146,146,146,146,146, 2, 2, 2, 2, 2, 99, 99,
+ 99, 99, 99, 99, 99, 99, 99, 99, 99, 2, 2, 2, 2, 99, 2, 2,
+ 2, 2, 2, 2, 2, 99,136,139, 13, 13,155, 2, 2, 2,136,136,
+ 136,136,136,136,136,136,155,155,155,155,155,155,155,155,155,155,
+ 155,155,155,155, 2, 2, 2, 2, 2, 2, 2, 2, 2,155,136, 2,
+ 2, 2, 2, 2, 2, 2, 17, 17, 17, 17, 2, 17, 17, 17, 17, 17,
+ 17, 17, 2, 17, 17, 2, 17, 15, 15, 15, 15, 15, 15, 15, 17, 17,
+ 17, 2, 2, 2, 2, 2, 2, 2, 15, 2, 2, 2, 2, 2, 15, 15,
+ 15, 2, 2, 17, 2, 2, 2, 2, 2, 2, 17, 17, 17, 17,139,139,
+ 139,139,139,139,139,139,139,139,139,139, 2, 2, 2, 2,105,105,
+ 105,105,105,105,105,105,105,105,105, 2, 2, 2, 2, 2,105,105,
+ 105,105,105, 2, 2, 2,105, 2, 2, 2, 2, 2, 2, 2,105,105,
+ 2, 2,105,105,105,105, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 2,
+ 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0,
+ 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0,
+ 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0,131,131,131,131,131,131,131,131,131,131,
+ 131,131, 2, 2, 2, 2, 2, 2, 2,131,131,131,131,131, 2,131,
+ 131,131,131,131,131,131, 2, 2, 2, 2, 2, 19, 19, 19, 56, 56,
+ 56, 56, 56, 56, 56, 2, 56, 2, 2, 56, 56, 56, 56, 56, 56, 56,
+ 2, 56, 56, 2, 56, 56, 56, 56, 56, 2, 2, 2, 2, 2, 6, 6,
+ 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,151,151,
+ 151,151,151,151,151,151,151,151,151,151,151, 2, 2, 2,151,151,
+ 151,151,151,151, 2, 2,151,151, 2, 2, 2, 2,151,151,160,160,
+ 160,160,160,160,160,160,160,160,160,160,160,160,160, 2,152,152,
+ 152,152,152,152,152,152,152,152, 2, 2, 2, 2, 2,152,164,164,
+ 164,164,164,164,164,164,164,164, 2, 2, 2, 2, 2, 2,168,168,
+ 168,168,168,168,168,168,168,168,168, 2, 2, 2, 2,168, 30, 30,
+ 30, 30, 2, 30, 30, 2,113,113,113,113,113,113,113,113,113,113,
+ 113,113,113, 2, 2,113,113,113,113,113,113,113,113, 2,132,132,
+ 132,132,132,132,132,132,132,132,132,132, 2, 2, 2, 2,132,132,
+ 2, 2, 2, 2,132,132, 3, 3, 3, 3, 2, 3, 3, 3, 2, 3,
+ 3, 2, 3, 2, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2,
+ 3, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 3,
+ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3,
+ 3, 3, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 0, 0, 15, 0, 0, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 13, 2,
+ 2, 2, 2, 2, 2, 2, 13, 13, 13, 2, 2, 2, 2, 2, 2, 0,
+ 2, 2, 2, 2, 2, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 9, 9, 9, 10, 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 16, 17, 9, 9, 9, 9, 18, 9, 9, 9, 9, 9, 19, 20,
+ 21, 9, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 23, 9, 9, 9, 9, 9, 24, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 23, 24,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, 0, 0,
- 31, 32, 0, 33, 0, 34, 0, 35, 0, 0, 0, 0, 36, 37, 38, 39,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, 28,
+ 29, 30, 0, 0, 31, 32, 0, 33, 0, 34, 0, 35, 0, 0, 0, 0,
+ 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0,
+ 0, 0, 0, 0, 0, 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, 0,
+ 46, 47, 0, 0, 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 0, 0, 0, 52, 0, 0,
+ 53, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0,
+ 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
+ 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, 0, 46, 47, 0, 0,
- 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 50, 51, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
- 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 69, 70, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99,100,101,102,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0,105,106, 0,
+ 107, 0, 0, 0,108, 0,109, 0,110, 0,111,112,113, 0,114, 0,
+ 0, 0,115, 0, 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,118,119,120,121, 0,122,123,124,
+ 125,126, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128,129,130,131,132,133,134,135,136,137,138,139,
+ 140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,
+ 156,157, 0, 0, 0,158,159,160,161, 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, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,
- 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,104, 0, 0, 0, 0, 0, 0,105,106, 0,107, 0, 0, 0,
- 108, 0,109, 0,110, 0,111,112,113, 0,114, 0, 0, 0,115, 0,
- 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,118,119,120,121, 0,122,123,124,125,126, 0,127,
+ 162, 0,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,165, 0,
+ 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,167, 0, 0, 0,168,169, 0, 0,
+ 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
- 144,145,146,147,148,149,150,151,152,153,154,155,156,157, 0, 0,
- 0,158,159,160,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,162,163, 0, 0, 0, 0, 0,
- 0, 0,164, 0, 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,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 0, 0, 0, 0,
+ 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,168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,169,170, 0, 0, 0, 0,171,172, 0, 0, 0,
- 173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,
- 189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,
- 205,206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,176,177, 0, 0, 0, 0,178,
+ 179, 0, 0, 0,180,181,182,183,184,185,186,187,188,189,190,191,
+ 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
+ 208,209,210,211,212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 2, 3, 4,
};
static const uint16_t
-_hb_ucd_u16[10060] =
+_hb_ucd_u16[9668] =
{
0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12,
13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23,
@@ -3776,9 +4012,10 @@ _hb_ucd_u16[10060] =
136, 48, 48, 137, 138, 139, 140, 140, 141, 48, 142, 143, 144, 145, 140, 140,
146, 147, 148, 149, 150, 48, 151, 152, 153, 154, 32, 155, 156, 157, 140, 140,
48, 48, 158, 159, 160, 161, 162, 163, 164, 165, 9, 9, 166, 11, 11, 167,
- 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 168, 169, 48, 48,
- 168, 48, 48, 170, 171, 172, 48, 48, 48, 171, 48, 48, 48, 173, 174, 175,
- 48, 176, 9, 9, 9, 9, 9, 177, 178, 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, 168, 169, 48, 48, 168, 48, 48, 170, 171, 172, 48, 48,
+ 48, 171, 48, 48, 48, 173, 174, 175, 48, 176, 9, 9, 9, 9, 9, 177,
+ 178, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 179, 48, 180, 181, 48, 48, 48, 48, 182, 183,
48, 184, 48, 185, 48, 186, 187, 188, 48, 48, 48, 189, 190, 191, 192, 193,
194, 192, 48, 48, 195, 48, 48, 196, 197, 48, 198, 48, 48, 48, 48, 199,
@@ -3791,28 +4028,34 @@ _hb_ucd_u16[10060] =
241, 242, 241, 241, 242, 243, 241, 244, 245, 245, 245, 246, 247, 248, 249, 250,
251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 272, 273, 274, 275, 209, 276, 277, 209, 278,
- 279, 279, 279, 279, 279, 279, 279, 279, 280, 209, 281, 209, 209, 209, 209, 282,
- 209, 283, 279, 284, 209, 285, 286, 209, 209, 209, 287, 140, 288, 140, 271, 271,
- 271, 289, 209, 209, 209, 209, 290, 271, 209, 209, 209, 209, 209, 209, 209, 209,
- 209, 209, 209, 291, 292, 209, 209, 293, 209, 209, 209, 209, 209, 209, 294, 209,
- 209, 209, 209, 209, 209, 209, 295, 296, 271, 297, 209, 209, 298, 279, 299, 279,
- 300, 301, 279, 279, 279, 302, 279, 303, 209, 209, 209, 279, 304, 209, 209, 305,
- 209, 306, 209, 209, 209, 209, 209, 209, 9, 9, 9, 11, 11, 11, 307, 308,
- 13, 13, 13, 13, 13, 13, 309, 310, 11, 11, 311, 48, 48, 48, 312, 313,
- 48, 314, 315, 315, 315, 315, 32, 32, 316, 317, 318, 319, 320, 321, 140, 140,
- 209, 322, 209, 209, 209, 209, 209, 323, 209, 209, 209, 209, 209, 324, 140, 209,
- 325, 326, 327, 328, 136, 48, 48, 48, 48, 329, 178, 48, 48, 48, 48, 330,
- 331, 48, 48, 136, 48, 48, 48, 48, 200, 332, 48, 48, 209, 209, 333, 48,
- 209, 334, 335, 209, 336, 337, 209, 209, 335, 209, 209, 337, 209, 209, 209, 209,
- 48, 48, 48, 48, 209, 209, 209, 209, 48, 338, 48, 48, 48, 48, 48, 48,
- 151, 209, 209, 209, 287, 48, 48, 229, 339, 48, 340, 140, 13, 13, 341, 342,
- 13, 343, 48, 48, 48, 48, 344, 345, 31, 346, 347, 348, 13, 13, 13, 349,
- 350, 351, 352, 353, 354, 355, 140, 356, 357, 48, 358, 359, 48, 48, 48, 360,
- 361, 48, 48, 362, 363, 192, 32, 364, 64, 48, 365, 48, 366, 367, 48, 151,
- 76, 48, 48, 368, 369, 370, 371, 372, 48, 48, 373, 374, 375, 376, 48, 377,
- 48, 48, 48, 378, 379, 380, 381, 382, 383, 384, 315, 11, 11, 385, 386, 11,
- 11, 11, 11, 11, 48, 48, 387, 192, 48, 48, 388, 48, 389, 48, 48, 206,
- 390, 390, 390, 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, 391, 391,
+ 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
+ 280, 209, 281, 209, 209, 209, 209, 282, 209, 283, 279, 284, 209, 285, 286, 209,
+ 209, 209, 176, 140, 287, 140, 271, 271, 271, 288, 209, 209, 209, 209, 289, 271,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 290, 291, 209, 209, 292,
+ 209, 209, 209, 209, 209, 209, 293, 209, 209, 209, 209, 209, 209, 209, 209, 209,
+ 209, 209, 209, 209, 209, 209, 294, 295, 271, 296, 209, 209, 297, 279, 298, 279,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
+ 279, 279, 279, 279, 279, 279, 279, 279, 299, 300, 279, 279, 279, 301, 279, 302,
+ 209, 209, 209, 279, 303, 209, 209, 304, 209, 305, 209, 209, 209, 209, 209, 209,
+ 9, 9, 9, 11, 11, 11, 306, 307, 13, 13, 13, 13, 13, 13, 308, 309,
+ 11, 11, 310, 48, 48, 48, 311, 312, 48, 313, 314, 314, 314, 314, 32, 32,
+ 315, 316, 317, 318, 319, 320, 140, 140, 209, 321, 209, 209, 209, 209, 209, 322,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, 140, 209,
+ 324, 325, 326, 327, 136, 48, 48, 48, 48, 328, 178, 48, 48, 48, 48, 329,
+ 330, 48, 48, 136, 48, 48, 48, 48, 200, 331, 48, 48, 209, 209, 332, 48,
+ 209, 333, 334, 209, 335, 336, 209, 209, 334, 209, 209, 336, 209, 209, 209, 209,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 209, 209, 209, 209,
+ 48, 337, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 151, 209, 209, 209, 338, 48, 48, 229,
+ 339, 48, 340, 140, 13, 13, 341, 342, 13, 343, 48, 48, 48, 48, 344, 345,
+ 31, 346, 347, 348, 13, 13, 13, 349, 350, 351, 352, 353, 354, 355, 140, 356,
+ 357, 48, 358, 359, 48, 48, 48, 360, 361, 48, 48, 362, 363, 192, 32, 364,
+ 64, 48, 365, 48, 366, 367, 48, 151, 76, 48, 48, 368, 369, 370, 371, 372,
+ 48, 48, 373, 374, 375, 376, 48, 377, 48, 48, 48, 378, 379, 380, 381, 382,
+ 383, 384, 314, 11, 11, 385, 386, 11, 11, 11, 11, 11, 48, 48, 387, 192,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 388, 48, 389, 48, 48, 206,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, 48, 207, 140, 140,
392, 393, 394, 395, 396, 48, 48, 48, 48, 48, 48, 397, 398, 399, 48, 48,
48, 48, 48, 400, 209, 48, 48, 48, 48, 401, 48, 48, 402, 140, 140, 403,
@@ -3823,571 +4066,540 @@ _hb_ucd_u16[10060] =
140, 140, 140, 140, 140, 140, 140, 140, 48, 151, 48, 48, 48, 100, 429, 430,
48, 48, 431, 48, 432, 48, 48, 433, 48, 434, 48, 48, 435, 436, 140, 140,
9, 9, 437, 11, 11, 48, 48, 48, 48, 204, 192, 9, 9, 438, 11, 439,
- 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 140, 140, 140, 140,
- 48, 48, 48, 314, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140,
+ 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 48, 48, 48, 388,
+ 48, 48, 48, 313, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140,
448, 48, 48, 449, 48, 450, 48, 451, 48, 200, 452, 140, 140, 140, 48, 453,
48, 454, 48, 455, 140, 140, 140, 140, 48, 48, 48, 456, 271, 457, 271, 271,
458, 459, 48, 460, 461, 462, 48, 463, 48, 464, 140, 140, 465, 48, 466, 467,
48, 48, 48, 468, 48, 469, 48, 470, 48, 471, 472, 140, 140, 140, 140, 140,
48, 48, 48, 48, 196, 140, 140, 140, 9, 9, 9, 473, 11, 11, 11, 474,
- 48, 48, 475, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 271, 476,
- 48, 48, 477, 478, 140, 140, 140, 479, 48, 464, 480, 48, 62, 481, 140, 48,
- 482, 140, 140, 48, 483, 140, 48, 314, 484, 48, 48, 485, 486, 457, 487, 488,
- 222, 48, 48, 489, 490, 48, 196, 192, 491, 48, 492, 493, 494, 48, 48, 495,
- 222, 48, 48, 496, 497, 498, 499, 500, 48, 97, 501, 502, 503, 140, 140, 140,
- 504, 505, 506, 48, 48, 507, 508, 192, 509, 83, 84, 510, 511, 512, 513, 514,
- 48, 48, 48, 515, 516, 517, 478, 140, 48, 48, 48, 518, 519, 192, 140, 140,
- 48, 48, 520, 521, 522, 523, 140, 140, 48, 48, 48, 524, 525, 192, 526, 140,
- 48, 48, 527, 528, 192, 140, 140, 140, 48, 173, 529, 530, 314, 140, 140, 140,
- 48, 48, 501, 531, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 532,
- 533, 534, 48, 535, 536, 192, 140, 140, 140, 140, 537, 48, 48, 538, 539, 140,
- 540, 48, 48, 541, 542, 543, 48, 48, 544, 545, 546, 48, 48, 48, 48, 196,
- 547, 140, 140, 140, 140, 140, 140, 140, 84, 48, 520, 548, 549, 148, 175, 550,
- 48, 551, 552, 553, 140, 140, 140, 140, 554, 48, 48, 555, 556, 192, 557, 48,
- 558, 559, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 560,
- 561, 115, 48, 562, 563, 192, 140, 140, 140, 140, 140, 100, 271, 564, 565, 566,
- 48, 207, 140, 140, 140, 140, 140, 140, 272, 272, 272, 272, 272, 272, 567, 568,
- 48, 48, 48, 48, 388, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 569,
- 48, 48, 48, 570, 571, 572, 140, 140, 48, 48, 48, 48, 314, 140, 140, 140,
- 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 573,
- 48, 48, 48, 574, 575, 576, 577, 578, 48, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 9, 9, 11, 11, 271, 579, 140, 140, 140, 140, 140, 140,
- 48, 48, 48, 48, 580, 581, 582, 582, 583, 584, 140, 140, 140, 140, 585, 586,
- 48, 48, 48, 48, 48, 48, 48, 440, 48, 48, 48, 48, 48, 199, 140, 140,
- 196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 587,
- 48, 48, 588, 589, 140, 590, 591, 48, 48, 48, 48, 48, 48, 48, 48, 206,
- 48, 48, 48, 48, 48, 48, 71, 151, 196, 592, 593, 140, 140, 140, 140, 140,
- 32, 32, 594, 32, 595, 209, 209, 209, 209, 209, 209, 209, 323, 140, 140, 140,
- 209, 209, 209, 209, 209, 209, 209, 324, 209, 209, 596, 209, 209, 209, 597, 598,
- 599, 209, 600, 209, 209, 209, 288, 140, 209, 209, 209, 209, 601, 140, 140, 140,
- 140, 140, 140, 140, 271, 602, 271, 602, 209, 209, 209, 209, 209, 287, 271, 461,
- 9, 603, 11, 604, 605, 606, 241, 9, 607, 608, 609, 610, 611, 9, 603, 11,
- 612, 613, 11, 614, 615, 616, 617, 9, 618, 11, 9, 603, 11, 604, 605, 11,
- 241, 9, 607, 617, 9, 618, 11, 9, 603, 11, 619, 9, 620, 621, 622, 623,
- 11, 624, 9, 625, 626, 627, 628, 11, 629, 9, 630, 11, 631, 632, 632, 632,
- 32, 32, 32, 633, 32, 32, 634, 635, 636, 637, 45, 140, 140, 140, 140, 140,
- 638, 639, 640, 140, 140, 140, 140, 140, 641, 642, 643, 27, 27, 27, 644, 140,
- 645, 140, 140, 140, 140, 140, 140, 140, 48, 48, 151, 646, 647, 140, 140, 140,
- 140, 48, 648, 140, 48, 48, 649, 650, 140, 140, 140, 140, 140, 48, 651, 192,
- 140, 140, 140, 140, 140, 140, 652, 200, 48, 48, 48, 48, 653, 595, 140, 140,
- 9, 9, 607, 11, 654, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 499,
- 271, 271, 655, 656, 140, 140, 140, 140, 499, 271, 657, 658, 140, 140, 140, 140,
- 659, 48, 660, 661, 662, 663, 664, 665, 666, 206, 667, 206, 140, 140, 140, 668,
- 209, 209, 669, 209, 209, 209, 209, 209, 209, 323, 334, 670, 670, 670, 209, 324,
- 671, 209, 209, 209, 209, 209, 209, 209, 209, 209, 672, 140, 140, 140, 673, 209,
- 674, 209, 209, 669, 675, 676, 324, 140, 209, 209, 209, 209, 209, 209, 209, 677,
- 209, 209, 209, 209, 209, 678, 426, 426, 209, 209, 209, 209, 209, 209, 209, 679,
- 209, 209, 209, 209, 209, 176, 669, 427, 669, 209, 209, 209, 680, 176, 209, 209,
- 680, 209, 672, 676, 140, 140, 140, 140, 209, 209, 209, 209, 209, 323, 672, 426,
- 675, 209, 209, 681, 682, 669, 675, 675, 209, 683, 209, 209, 288, 140, 140, 192,
- 48, 48, 48, 48, 48, 48, 140, 140, 48, 48, 48, 207, 48, 48, 48, 48,
- 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 478, 48, 48, 48, 48, 48,
- 48, 48, 48, 48, 48, 48, 100, 48, 48, 48, 48, 48, 48, 204, 140, 140,
- 48, 204, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 71, 48, 48, 48,
- 48, 48, 48, 140, 140, 140, 140, 140, 684, 140, 570, 570, 570, 570, 570, 570,
+ 48, 48, 475, 192, 476, 9, 477, 11, 478, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 271, 479, 48, 48, 480, 481, 482, 140, 140, 483,
+ 48, 464, 484, 48, 62, 485, 140, 48, 486, 140, 140, 48, 487, 140, 48, 313,
+ 488, 48, 48, 489, 490, 457, 491, 492, 222, 48, 48, 493, 494, 48, 196, 192,
+ 495, 48, 496, 497, 498, 48, 48, 499, 222, 48, 48, 500, 501, 502, 503, 504,
+ 48, 97, 505, 506, 507, 140, 140, 140, 508, 509, 510, 48, 48, 511, 512, 192,
+ 513, 83, 84, 514, 515, 516, 517, 518, 519, 48, 48, 520, 521, 522, 523, 140,
+ 48, 48, 48, 524, 525, 526, 481, 140, 48, 48, 48, 527, 528, 192, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 529, 530, 531, 532, 140, 140,
+ 48, 48, 48, 533, 534, 192, 535, 140, 48, 48, 536, 537, 192, 538, 539, 140,
+ 48, 540, 541, 542, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 48, 505, 543, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 544,
+ 545, 546, 48, 547, 548, 192, 140, 140, 140, 140, 549, 48, 48, 550, 551, 140,
+ 552, 48, 48, 553, 554, 555, 48, 48, 556, 557, 558, 48, 48, 48, 48, 196,
+ 559, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 560, 192,
+ 84, 48, 529, 561, 562, 148, 175, 563, 48, 564, 565, 566, 140, 140, 140, 140,
+ 567, 48, 48, 568, 569, 192, 570, 48, 571, 572, 192, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 573,
+ 574, 115, 48, 575, 576, 577, 140, 140, 140, 140, 140, 100, 271, 578, 579, 580,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140,
+ 272, 272, 272, 272, 272, 272, 581, 582, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 388, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 583,
+ 48, 48, 48, 584, 585, 586, 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, 71,
+ 48, 48, 48, 48, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 587, 588, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 589,
+ 48, 48, 48, 590, 591, 592, 593, 594, 48, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 595, 48, 596, 192, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 9, 9, 11, 11, 271, 597, 140, 140, 140, 140, 140, 140,
+ 48, 48, 48, 48, 598, 599, 600, 600, 601, 602, 140, 140, 140, 140, 603, 604,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 440,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 199, 140, 605,
+ 196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 606,
+ 48, 48, 607, 608, 140, 609, 610, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 206,
+ 48, 48, 48, 48, 48, 48, 71, 151, 196, 611, 612, 140, 140, 140, 140, 140,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 192,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140, 140,
+ 32, 32, 613, 32, 614, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323,
+ 209, 209, 615, 209, 209, 209, 616, 617, 618, 209, 619, 209, 209, 209, 287, 140,
+ 209, 209, 209, 209, 620, 140, 140, 140, 140, 140, 140, 140, 271, 621, 271, 621,
+ 209, 209, 209, 209, 209, 338, 271, 461, 140, 140, 140, 140, 140, 140, 140, 140,
+ 9, 622, 11, 623, 624, 625, 241, 9, 626, 627, 628, 629, 630, 9, 622, 11,
+ 631, 632, 11, 633, 634, 635, 636, 9, 637, 11, 9, 622, 11, 623, 624, 11,
+ 241, 9, 626, 636, 9, 637, 11, 9, 622, 11, 638, 9, 639, 640, 641, 642,
+ 11, 643, 9, 644, 645, 646, 647, 11, 648, 9, 649, 11, 650, 538, 538, 538,
+ 32, 32, 32, 651, 32, 32, 652, 653, 654, 655, 45, 140, 140, 140, 140, 140,
+ 656, 657, 658, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 659, 660, 661, 27, 27, 27, 662, 140, 663, 140, 140, 140, 140, 140, 140, 140,
+ 48, 48, 151, 664, 665, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 666, 140, 48, 48, 667, 668,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 669, 192,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 587, 670,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 671, 200,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 672, 614, 140, 140,
+ 9, 9, 626, 11, 673, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 503, 271, 271, 674, 675, 140, 140, 140, 140,
+ 503, 271, 676, 677, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 678, 48, 679, 680, 681, 682, 683, 684, 685, 206, 686, 206, 140, 140, 140, 687,
+ 209, 209, 688, 209, 209, 209, 209, 209, 209, 322, 333, 689, 689, 689, 209, 323,
+ 690, 209, 209, 209, 209, 209, 209, 209, 209, 209, 691, 140, 140, 140, 692, 209,
+ 693, 209, 209, 688, 694, 695, 323, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 696,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 697, 426, 426,
+ 209, 209, 209, 209, 209, 209, 209, 698, 209, 209, 209, 209, 209, 176, 688, 427,
+ 688, 209, 209, 209, 699, 176, 209, 209, 699, 209, 691, 688, 695, 140, 140, 140,
+ 209, 209, 209, 209, 209, 322, 691, 426, 700, 209, 209, 209, 701, 702, 176, 694,
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 703, 209, 209, 209, 209, 209, 192,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140,
+ 48, 48, 48, 207, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 100, 48,
+ 48, 48, 48, 48, 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 48, 48, 48, 48, 71, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, 140, 140, 140,
+ 704, 140, 584, 584, 584, 584, 584, 584, 140, 140, 140, 140, 140, 140, 140, 140,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 140,
- 391, 391, 391, 391, 391, 391, 391, 685, 391, 391, 391, 391, 391, 391, 391, 686,
- 0, 0, 0, 0, 1, 2, 1, 2, 0, 0, 3, 3, 4, 5, 4, 5,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 0, 0, 7, 0,
- 8, 8, 8, 8, 8, 8, 8, 9, 10, 11, 12, 11, 11, 11, 13, 11,
- 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 16, 17, 18, 17, 17, 19, 20, 21, 21, 22, 21, 23, 24,
- 25, 26, 27, 27, 28, 29, 27, 30, 27, 27, 27, 27, 27, 31, 27, 27,
- 32, 33, 33, 33, 34, 27, 27, 27, 35, 35, 35, 36, 37, 37, 37, 38,
- 39, 39, 40, 41, 42, 43, 44, 27, 45, 46, 27, 27, 27, 27, 47, 27,
- 48, 48, 48, 48, 48, 49, 50, 48, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 109, 110, 111, 112, 109, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 122, 123, 122, 124, 125, 125, 126, 127, 128, 129, 130, 131, 125, 125,
- 132, 132, 132, 132, 133, 132, 134, 135, 132, 133, 132, 136, 136, 137, 125, 125,
- 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, 140, 139, 139, 141,
- 142, 142, 142, 142, 142, 142, 142, 142, 143, 143, 143, 143, 144, 145, 143, 143,
- 144, 143, 143, 146, 147, 148, 143, 143, 143, 147, 143, 143, 143, 149, 143, 150,
- 143, 151, 152, 152, 152, 152, 152, 153, 154, 154, 154, 154, 154, 154, 154, 154,
- 155, 156, 157, 157, 157, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 168, 168, 168, 168, 169, 170, 170, 171, 172, 173, 173, 173, 173, 173, 174,
- 173, 173, 175, 154, 154, 154, 154, 176, 177, 178, 179, 179, 180, 181, 182, 183,
- 184, 184, 185, 184, 186, 187, 168, 168, 188, 189, 190, 190, 190, 191, 190, 192,
- 193, 193, 194, 8, 195, 125, 125, 125, 196, 196, 196, 196, 197, 196, 196, 198,
- 199, 199, 199, 199, 200, 200, 200, 201, 202, 202, 202, 203, 204, 205, 205, 205,
- 206, 139, 139, 207, 208, 209, 210, 211, 4, 4, 212, 4, 4, 213, 214, 215,
- 4, 4, 4, 216, 8, 8, 8, 8, 11, 217, 11, 11, 217, 218, 11, 219,
- 11, 11, 11, 220, 220, 221, 11, 222, 223, 0, 0, 0, 0, 0, 224, 225,
- 226, 227, 0, 0, 228, 8, 8, 229, 0, 0, 230, 231, 232, 0, 4, 4,
- 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 234, 125, 235, 125, 0, 0, 236, 236, 236, 236, 236, 236, 236, 236,
- 0, 0, 0, 0, 0, 0, 0, 237, 0, 238, 0, 0, 0, 0, 0, 0,
- 239, 239, 239, 239, 239, 239, 4, 4, 240, 240, 240, 240, 240, 240, 240, 241,
- 139, 139, 140, 242, 242, 242, 243, 244, 143, 245, 246, 246, 246, 246, 14, 14,
- 0, 0, 0, 0, 0, 247, 125, 125, 248, 249, 248, 248, 248, 248, 248, 250,
- 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 251, 125, 0,
- 252, 0, 253, 254, 255, 256, 256, 256, 256, 257, 258, 259, 259, 259, 259, 260,
- 261, 262, 262, 263, 142, 142, 142, 142, 264, 0, 262, 262, 0, 0, 265, 259,
- 142, 264, 0, 0, 0, 0, 142, 266, 0, 0, 0, 0, 0, 259, 259, 267,
- 259, 259, 259, 259, 259, 268, 0, 0, 248, 248, 248, 248, 0, 0, 0, 0,
- 269, 269, 269, 269, 269, 269, 269, 269, 270, 269, 269, 269, 271, 272, 272, 272,
- 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 274, 125, 14, 14, 14, 14,
- 14, 14, 275, 275, 275, 275, 275, 276, 0, 0, 277, 4, 4, 4, 4, 4,
- 278, 4, 4, 4, 279, 280, 125, 281, 282, 282, 283, 284, 285, 285, 285, 286,
- 287, 287, 287, 287, 288, 289, 48, 48, 290, 290, 291, 292, 292, 293, 142, 294,
- 295, 295, 295, 295, 296, 297, 138, 298, 299, 299, 299, 300, 301, 302, 138, 138,
- 303, 303, 303, 303, 304, 305, 306, 307, 308, 309, 246, 4, 4, 310, 311, 152,
- 152, 152, 152, 152, 306, 306, 312, 313, 142, 142, 314, 142, 315, 142, 142, 316,
- 125, 125, 125, 125, 125, 125, 125, 125, 248, 248, 248, 248, 248, 248, 317, 248,
- 248, 248, 248, 248, 248, 318, 125, 125, 319, 320, 21, 321, 322, 27, 27, 27,
- 27, 27, 27, 27, 323, 324, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
- 27, 27, 27, 325, 27, 27, 27, 27, 27, 326, 27, 27, 327, 125, 125, 27,
- 8, 284, 328, 0, 0, 329, 330, 331, 27, 27, 27, 27, 27, 27, 27, 332,
- 333, 0, 1, 2, 1, 2, 334, 258, 259, 335, 142, 264, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 344, 125, 125, 341, 341, 341, 341, 341, 341, 341, 345,
- 346, 0, 0, 347, 11, 11, 11, 11, 348, 349, 350, 125, 125, 0, 0, 351,
- 352, 353, 354, 354, 354, 355, 356, 357, 358, 358, 359, 360, 361, 362, 362, 363,
- 364, 365, 366, 366, 367, 368, 125, 125, 369, 369, 369, 369, 369, 370, 370, 370,
- 371, 372, 373, 374, 374, 375, 374, 376, 377, 377, 378, 379, 379, 379, 380, 381,
- 381, 382, 383, 384, 125, 125, 125, 125, 385, 385, 385, 385, 385, 385, 385, 385,
- 385, 385, 385, 386, 385, 387, 388, 125, 389, 4, 4, 390, 125, 125, 125, 125,
- 391, 392, 392, 393, 394, 395, 396, 396, 397, 398, 399, 125, 125, 125, 400, 401,
- 402, 403, 404, 405, 125, 125, 125, 125, 406, 406, 407, 408, 407, 409, 407, 407,
- 410, 411, 412, 413, 414, 414, 415, 415, 416, 416, 125, 125, 417, 417, 418, 419,
- 420, 420, 420, 421, 422, 423, 424, 425, 426, 427, 428, 125, 125, 125, 125, 125,
- 429, 429, 429, 429, 430, 125, 125, 125, 431, 431, 431, 432, 431, 431, 431, 433,
- 434, 434, 435, 436, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 27, 45,
- 437, 437, 438, 439, 125, 125, 125, 440, 441, 441, 442, 443, 443, 444, 125, 445,
- 446, 125, 125, 447, 448, 125, 449, 450, 451, 451, 451, 451, 452, 453, 451, 454,
- 455, 455, 455, 455, 456, 457, 458, 459, 460, 460, 460, 461, 462, 463, 463, 464,
- 465, 465, 465, 465, 465, 465, 466, 467, 468, 469, 468, 468, 470, 125, 125, 125,
- 471, 472, 473, 474, 474, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 485, 485, 485, 485, 486, 487, 125, 488, 488, 488, 488, 489, 490, 125, 125,
- 491, 491, 491, 492, 491, 493, 125, 125, 494, 494, 494, 494, 495, 496, 497, 125,
- 498, 498, 498, 499, 499, 125, 125, 125, 500, 501, 502, 500, 503, 125, 125, 125,
- 504, 504, 504, 505, 125, 125, 125, 125, 125, 125, 506, 506, 506, 506, 506, 507,
- 508, 509, 510, 511, 512, 513, 125, 125, 125, 125, 514, 515, 515, 514, 516, 125,
- 517, 517, 517, 517, 518, 519, 519, 519, 519, 519, 520, 154, 521, 521, 521, 522,
- 523, 125, 125, 125, 125, 125, 125, 125, 524, 525, 525, 526, 527, 525, 528, 529,
- 529, 530, 531, 532, 125, 125, 125, 125, 533, 534, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 543, 544,
- 545, 546, 545, 547, 545, 548, 125, 125, 125, 125, 125, 549, 550, 550, 550, 551,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 553, 125, 125, 125, 125, 125, 125,
- 552, 552, 552, 552, 552, 552, 554, 555, 552, 552, 552, 552, 556, 125, 125, 125,
- 125, 557, 557, 557, 557, 557, 557, 558, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 560, 125, 125, 561, 561, 561, 561, 561, 561, 561, 561,
- 561, 561, 561, 561, 562, 125, 125, 125, 275, 275, 275, 275, 275, 275, 275, 275,
- 275, 275, 275, 563, 564, 565, 566, 567, 567, 567, 567, 568, 569, 570, 571, 572,
- 573, 573, 573, 573, 574, 575, 576, 577, 573, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 578, 578, 578, 578, 578, 579, 125, 125, 125, 125, 125, 125,
- 580, 580, 580, 580, 581, 580, 580, 580, 582, 580, 125, 125, 125, 125, 583, 584,
- 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 586,
- 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 588, 125, 125,
- 589, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 590,
- 591, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
- 256, 256, 592, 593, 125, 594, 595, 596, 596, 596, 596, 596, 596, 596, 596, 596,
- 596, 596, 596, 596, 596, 596, 596, 597, 598, 598, 598, 598, 598, 598, 599, 600,
- 601, 602, 603, 125, 125, 125, 125, 125, 8, 8, 604, 8, 605, 0, 0, 0,
- 0, 0, 0, 0, 603, 125, 125, 125, 0, 0, 0, 0, 0, 0, 0, 606,
- 0, 0, 607, 0, 0, 0, 608, 609, 610, 0, 611, 0, 0, 0, 235, 125,
- 11, 11, 11, 11, 612, 125, 125, 125, 125, 125, 125, 125, 0, 603, 0, 603,
- 0, 0, 0, 0, 0, 234, 0, 613, 0, 0, 0, 0, 0, 224, 0, 0,
- 0, 614, 615, 616, 617, 0, 0, 0, 618, 619, 0, 620, 621, 622, 0, 0,
- 0, 0, 623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 624, 0, 0, 0,
- 625, 625, 625, 625, 625, 625, 625, 625, 626, 627, 628, 125, 125, 125, 125, 125,
- 4, 629, 630, 125, 125, 125, 125, 125, 631, 632, 633, 14, 14, 14, 634, 125,
- 635, 125, 125, 125, 125, 125, 125, 125, 636, 636, 637, 638, 639, 125, 125, 125,
- 125, 640, 641, 125, 642, 642, 642, 643, 125, 125, 125, 125, 125, 644, 644, 645,
- 125, 125, 125, 125, 125, 125, 646, 647, 648, 648, 648, 648, 648, 648, 648, 648,
- 648, 648, 648, 648, 649, 650, 125, 125, 651, 651, 651, 651, 652, 653, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 333, 0, 0, 0, 654, 125, 125, 125, 125,
- 333, 0, 0, 247, 125, 125, 125, 125, 655, 27, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 663, 125, 125, 125, 665, 0, 0, 357, 0, 0, 0, 0, 0,
- 0, 603, 226, 333, 333, 333, 0, 606, 0, 0, 247, 125, 125, 125, 666, 0,
- 667, 0, 0, 357, 613, 668, 606, 125, 0, 0, 0, 0, 0, 669, 349, 349,
- 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 284, 357, 228,
- 357, 0, 0, 0, 671, 284, 0, 0, 671, 0, 247, 668, 125, 125, 125, 125,
- 0, 0, 0, 0, 0, 603, 247, 349, 613, 0, 0, 672, 673, 357, 613, 613,
- 0, 329, 0, 0, 235, 125, 125, 284, 248, 248, 248, 248, 248, 248, 125, 125,
- 248, 248, 248, 318, 248, 248, 248, 248, 248, 317, 248, 248, 248, 248, 248, 248,
- 248, 248, 584, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 674, 248,
- 248, 248, 248, 248, 248, 317, 125, 125, 248, 317, 125, 125, 125, 125, 125, 125,
- 248, 248, 248, 248, 675, 248, 248, 248, 248, 248, 248, 125, 125, 125, 125, 125,
- 676, 125, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 1, 2, 2, 2,
- 2, 2, 3, 0, 0, 0, 4, 0, 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 5, 0, 2, 5, 6, 0, 7, 7, 7, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 8, 8, 8, 8, 16, 8, 8, 8, 17, 18, 18, 18,
- 19, 19, 19, 19, 19, 20, 19, 19, 21, 22, 22, 22, 22, 22, 22, 22,
- 22, 23, 21, 22, 22, 22, 23, 21, 24, 25, 25, 25, 25, 25, 25, 25,
- 25, 25, 12, 12, 25, 25, 26, 27, 25, 28, 12, 12, 29, 30, 29, 31,
- 29, 29, 32, 32, 29, 29, 29, 29, 31, 29, 33, 7, 7, 34, 29, 29,
- 35, 29, 29, 29, 29, 29, 29, 30, 36, 36, 36, 37, 36, 36, 36, 36,
- 36, 36, 38, 39, 40, 40, 40, 40, 41, 12, 12, 12, 42, 42, 42, 42,
- 42, 42, 43, 44, 45, 45, 45, 45, 45, 45, 45, 46, 45, 45, 45, 47,
- 48, 48, 48, 48, 48, 48, 48, 49, 36, 36, 38, 12, 29, 29, 29, 50,
- 51, 12, 29, 29, 52, 29, 29, 29, 53, 53, 53, 53, 54, 55, 53, 53,
- 53, 56, 53, 53, 57, 58, 57, 59, 59, 57, 57, 57, 57, 57, 60, 57,
- 61, 62, 63, 57, 57, 59, 59, 64, 12, 65, 12, 66, 57, 62, 57, 57,
- 57, 57, 57, 64, 67, 67, 68, 69, 70, 71, 71, 71, 71, 71, 72, 71,
- 72, 73, 74, 72, 68, 69, 70, 74, 75, 12, 67, 76, 12, 77, 71, 71,
- 71, 68, 12, 12, 78, 78, 79, 80, 80, 79, 79, 79, 79, 79, 81, 79,
- 81, 78, 82, 79, 79, 80, 80, 82, 83, 12, 12, 12, 79, 84, 79, 79,
- 82, 12, 78, 79, 85, 85, 86, 87, 87, 86, 86, 86, 86, 86, 88, 86,
- 88, 85, 89, 86, 86, 87, 87, 89, 12, 85, 12, 90, 86, 91, 86, 86,
- 86, 86, 12, 12, 92, 93, 94, 92, 95, 96, 97, 95, 98, 99, 94, 92,
- 100, 100, 96, 92, 94, 92, 95, 96, 99, 98, 12, 12, 12, 92, 100, 100,
- 100, 100, 94, 12, 101, 101, 101, 102, 102, 101, 101, 101, 101, 101, 102, 101,
- 101, 101, 103, 101, 101, 102, 102, 103, 12, 104, 105, 106, 101, 107, 101, 101,
- 12, 108, 101, 101, 109, 109, 109, 110, 110, 109, 109, 109, 109, 109, 110, 109,
- 109, 111, 112, 109, 109, 110, 110, 112, 12, 113, 12, 113, 109, 114, 109, 109,
- 111, 12, 12, 12, 115, 115, 115, 116, 116, 115, 115, 115, 115, 115, 115, 115,
- 115, 116, 116, 115, 12, 115, 115, 115, 115, 117, 115, 115, 118, 118, 119, 119,
- 119, 120, 121, 119, 119, 119, 119, 119, 122, 119, 119, 123, 119, 120, 124, 125,
- 119, 126, 119, 119, 12, 121, 119, 119, 121, 127, 12, 12, 128, 129, 129, 129,
- 129, 129, 129, 129, 129, 129, 130, 131, 129, 129, 129, 12, 12, 12, 12, 12,
- 132, 133, 134, 135, 135, 135, 135, 135, 135, 136, 135, 135, 135, 135, 135, 137,
- 135, 138, 135, 134, 135, 135, 137, 135, 139, 139, 139, 139, 139, 139, 140, 139,
- 139, 139, 139, 141, 140, 139, 139, 139, 139, 139, 139, 142, 139, 143, 144, 12,
- 145, 145, 145, 145, 146, 146, 146, 146, 146, 147, 12, 148, 146, 146, 149, 146,
- 150, 150, 150, 150, 151, 151, 151, 151, 151, 151, 152, 153, 151, 154, 152, 153,
- 152, 153, 151, 154, 152, 153, 151, 151, 151, 154, 151, 151, 151, 151, 154, 155,
- 151, 151, 151, 156, 151, 151, 153, 12, 157, 157, 157, 157, 157, 158, 157, 158,
- 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 161, 162, 162, 162, 162,
- 162, 162, 163, 164, 162, 162, 165, 12, 166, 166, 166, 166, 166, 167, 12, 168,
- 169, 169, 169, 169, 169, 170, 12, 12, 171, 171, 171, 171, 171, 12, 12, 12,
- 172, 172, 172, 173, 173, 12, 12, 12, 174, 174, 174, 174, 174, 174, 174, 175,
- 174, 174, 175, 12, 176, 177, 178, 178, 178, 178, 179, 12, 178, 178, 178, 178,
- 178, 178, 180, 12, 178, 178, 181, 12, 159, 182, 12, 12, 183, 183, 183, 183,
- 183, 183, 183, 184, 183, 183, 183, 12, 185, 183, 183, 183, 186, 186, 186, 186,
- 186, 186, 186, 187, 186, 188, 12, 12, 189, 189, 189, 189, 189, 189, 189, 12,
- 189, 189, 190, 12, 189, 189, 191, 192, 193, 193, 193, 193, 193, 193, 193, 194,
- 195, 195, 195, 195, 195, 195, 195, 196, 195, 195, 195, 197, 195, 195, 198, 12,
- 195, 195, 195, 198, 7, 7, 7, 199, 200, 200, 200, 200, 200, 200, 200, 201,
- 200, 200, 200, 202, 203, 203, 203, 203, 204, 204, 204, 204, 204, 12, 12, 204,
- 205, 205, 205, 205, 205, 205, 206, 205, 205, 205, 207, 208, 209, 209, 209, 209,
- 19, 19, 210, 12, 146, 146, 211, 212, 203, 203, 12, 12, 213, 7, 7, 7,
- 214, 7, 215, 216, 0, 215, 217, 12, 2, 218, 219, 2, 2, 2, 2, 220,
- 221, 218, 222, 2, 2, 2, 223, 2, 2, 2, 2, 224, 8, 225, 8, 225,
- 8, 8, 226, 226, 8, 8, 8, 225, 8, 15, 8, 8, 8, 10, 8, 227,
- 10, 15, 8, 14, 0, 0, 0, 228, 0, 229, 0, 0, 230, 0, 0, 231,
- 0, 0, 0, 232, 2, 2, 2, 233, 234, 12, 12, 12, 235, 12, 12, 12,
- 0, 236, 237, 0, 4, 0, 0, 0, 0, 0, 0, 4, 2, 2, 5, 12,
- 0, 232, 12, 12, 0, 0, 232, 12, 238, 238, 238, 238, 0, 239, 0, 0,
- 0, 240, 0, 0, 241, 241, 241, 241, 18, 18, 18, 18, 18, 12, 242, 18,
- 243, 243, 243, 243, 243, 243, 12, 244, 245, 12, 12, 244, 151, 154, 12, 12,
- 151, 154, 151, 154, 0, 0, 0, 246, 247, 247, 247, 247, 247, 247, 248, 247,
- 247, 12, 12, 12, 247, 249, 12, 12, 0, 250, 0, 0, 251, 247, 252, 253,
- 0, 0, 247, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 256, 257, 258,
- 259, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 259, 12, 262, 263, 263,
- 263, 263, 263, 263, 264, 150, 150, 150, 150, 150, 150, 265, 0, 12, 12, 131,
- 150, 150, 150, 266, 260, 260, 260, 261, 260, 260, 0, 0, 267, 267, 267, 267,
- 267, 267, 267, 268, 267, 269, 12, 12, 270, 270, 270, 270, 271, 271, 271, 271,
- 271, 271, 271, 12, 272, 272, 272, 272, 272, 272, 12, 12, 237, 2, 2, 2,
- 2, 2, 231, 2, 2, 2, 273, 12, 274, 275, 276, 12, 277, 2, 2, 2,
- 278, 278, 278, 278, 278, 278, 278, 279, 0, 0, 246, 12, 280, 280, 280, 280,
- 280, 280, 12, 12, 281, 281, 281, 281, 281, 282, 12, 283, 281, 281, 282, 12,
- 284, 284, 284, 284, 284, 284, 284, 285, 286, 286, 286, 286, 286, 12, 12, 287,
- 150, 150, 150, 288, 289, 289, 289, 289, 289, 289, 289, 290, 289, 289, 291, 292,
- 145, 145, 145, 293, 294, 294, 294, 294, 294, 295, 12, 12, 294, 294, 294, 296,
- 294, 294, 296, 294, 297, 297, 297, 297, 298, 12, 12, 12, 12, 12, 299, 297,
- 300, 300, 300, 300, 300, 301, 12, 12, 155, 154, 155, 154, 155, 154, 12, 12,
- 2, 2, 3, 2, 2, 302, 303, 12, 300, 300, 300, 304, 300, 300, 304, 12,
- 150, 12, 12, 12, 150, 265, 305, 150, 150, 150, 150, 12, 247, 247, 247, 249,
- 247, 247, 249, 12, 2, 273, 12, 12, 306, 22, 12, 24, 25, 26, 25, 307,
- 308, 309, 25, 25, 50, 12, 12, 12, 310, 29, 29, 29, 29, 29, 29, 311,
- 312, 29, 29, 29, 29, 29, 12, 310, 7, 7, 7, 313, 232, 0, 0, 0,
- 0, 232, 0, 12, 29, 314, 29, 29, 29, 29, 29, 315, 316, 0, 0, 0,
- 0, 317, 260, 260, 260, 260, 260, 318, 319, 150, 319, 150, 319, 150, 319, 288,
- 0, 232, 0, 232, 12, 12, 316, 246, 320, 320, 320, 321, 320, 320, 320, 320,
- 320, 322, 320, 320, 320, 320, 322, 323, 320, 320, 320, 324, 320, 320, 322, 12,
- 232, 131, 0, 0, 0, 131, 0, 0, 8, 8, 8, 14, 0, 0, 0, 234,
- 325, 12, 12, 12, 0, 0, 0, 326, 327, 327, 327, 327, 327, 327, 327, 328,
- 329, 329, 329, 329, 330, 12, 12, 12, 215, 0, 0, 0, 0, 0, 0, 12,
- 331, 331, 331, 331, 331, 12, 12, 332, 333, 333, 333, 333, 333, 333, 334, 12,
- 335, 335, 335, 335, 335, 335, 336, 12, 337, 337, 337, 337, 337, 337, 337, 338,
- 339, 339, 339, 339, 339, 12, 339, 339, 339, 340, 12, 12, 341, 341, 341, 341,
- 342, 342, 342, 342, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 344, 12,
- 345, 345, 345, 345, 345, 12, 345, 345, 345, 345, 345, 12, 346, 346, 346, 346,
- 346, 346, 12, 12, 347, 347, 347, 347, 347, 12, 12, 348, 349, 349, 350, 349,
- 350, 351, 349, 349, 351, 349, 349, 349, 351, 349, 351, 352, 353, 353, 353, 353,
- 353, 354, 12, 12, 353, 355, 12, 12, 353, 353, 12, 12, 2, 274, 2, 2,
- 356, 2, 273, 12, 357, 358, 359, 357, 357, 357, 357, 357, 357, 360, 361, 362,
- 363, 363, 363, 363, 363, 364, 363, 363, 365, 365, 365, 365, 366, 366, 366, 366,
- 366, 366, 366, 367, 12, 368, 366, 366, 369, 369, 369, 369, 370, 371, 372, 369,
- 373, 373, 373, 373, 373, 373, 373, 374, 375, 375, 375, 375, 375, 375, 376, 377,
- 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 12, 379, 380, 379, 379, 379,
- 381, 382, 12, 381, 381, 383, 383, 381, 381, 381, 381, 381, 381, 384, 385, 386,
- 381, 381, 387, 12, 388, 388, 388, 388, 389, 389, 389, 389, 390, 390, 390, 390,
- 390, 391, 392, 390, 390, 391, 12, 12, 393, 393, 393, 393, 393, 394, 395, 393,
- 396, 396, 396, 396, 396, 397, 396, 396, 398, 398, 398, 398, 399, 12, 398, 398,
- 400, 400, 400, 400, 401, 12, 402, 403, 12, 12, 402, 400, 404, 404, 404, 404,
- 404, 404, 405, 12, 406, 406, 406, 406, 407, 12, 12, 12, 407, 12, 408, 406,
- 409, 409, 409, 409, 409, 409, 12, 12, 409, 409, 410, 12, 411, 411, 411, 411,
- 411, 411, 412, 413, 413, 12, 12, 12, 12, 12, 12, 414, 415, 415, 415, 415,
- 415, 415, 12, 12, 416, 416, 416, 416, 416, 416, 417, 12, 418, 418, 418, 418,
- 418, 418, 419, 12, 420, 420, 420, 420, 420, 420, 420, 12, 421, 421, 421, 421,
- 421, 422, 12, 12, 423, 423, 423, 423, 423, 423, 423, 424, 425, 423, 423, 423,
- 423, 424, 12, 426, 427, 427, 427, 427, 428, 12, 12, 429, 430, 430, 430, 430,
- 430, 430, 431, 12, 430, 430, 432, 12, 433, 433, 433, 433, 433, 434, 433, 433,
- 433, 433, 12, 12, 435, 435, 435, 435, 435, 436, 12, 12, 437, 437, 437, 437,
- 118, 119, 119, 119, 119, 127, 12, 12, 438, 438, 438, 438, 439, 438, 438, 438,
- 440, 12, 12, 12, 441, 442, 443, 444, 441, 441, 441, 444, 441, 441, 445, 12,
- 446, 446, 446, 446, 446, 446, 447, 12, 446, 446, 448, 12, 449, 450, 449, 451,
- 451, 449, 449, 449, 449, 449, 452, 449, 452, 450, 453, 449, 449, 451, 451, 454,
- 455, 456, 12, 450, 449, 457, 449, 455, 449, 455, 12, 12, 458, 458, 458, 458,
- 458, 458, 458, 459, 460, 12, 12, 12, 461, 461, 461, 461, 461, 461, 12, 12,
- 461, 461, 462, 12, 463, 463, 463, 463, 463, 464, 463, 463, 463, 463, 463, 464,
- 465, 465, 465, 465, 465, 466, 12, 12, 465, 465, 467, 12, 178, 178, 178, 180,
- 468, 468, 468, 468, 468, 468, 469, 12, 470, 470, 470, 470, 470, 470, 471, 472,
- 470, 470, 470, 12, 470, 471, 12, 12, 473, 473, 473, 473, 473, 473, 473, 12,
- 474, 474, 474, 474, 475, 12, 12, 476, 477, 478, 479, 477, 477, 480, 477, 477,
- 477, 477, 477, 477, 477, 481, 482, 477, 477, 478, 12, 12, 477, 477, 483, 12,
- 484, 484, 485, 484, 484, 484, 484, 484, 484, 486, 12, 12, 487, 487, 487, 487,
- 487, 487, 12, 12, 488, 488, 488, 488, 489, 12, 12, 12, 490, 490, 490, 490,
- 490, 490, 491, 12, 53, 53, 492, 12, 493, 493, 494, 493, 493, 493, 493, 493,
- 493, 495, 493, 493, 493, 496, 12, 12, 493, 493, 493, 497, 498, 498, 498, 498,
- 499, 498, 498, 498, 498, 498, 500, 498, 498, 501, 12, 12, 502, 503, 504, 502,
- 502, 502, 502, 502, 502, 503, 505, 504, 502, 502, 12, 12, 502, 502, 506, 12,
- 507, 508, 509, 507, 507, 507, 507, 507, 507, 507, 507, 510, 508, 507, 511, 12,
- 507, 507, 512, 12, 513, 513, 513, 513, 513, 513, 514, 12, 515, 515, 515, 515,
- 516, 515, 515, 515, 515, 515, 517, 518, 515, 515, 519, 12, 520, 12, 12, 12,
- 100, 100, 100, 100, 96, 12, 12, 98, 521, 521, 521, 521, 521, 521, 522, 12,
- 521, 521, 521, 523, 521, 524, 12, 12, 521, 12, 12, 12, 525, 525, 525, 525,
- 526, 12, 12, 12, 527, 527, 527, 527, 527, 528, 12, 12, 529, 529, 529, 529,
- 529, 530, 12, 12, 272, 272, 531, 12, 532, 532, 532, 532, 532, 532, 532, 533,
- 532, 532, 534, 535, 536, 536, 536, 536, 536, 536, 536, 537, 536, 536, 538, 12,
- 539, 539, 539, 539, 539, 539, 539, 540, 539, 540, 12, 12, 541, 541, 541, 541,
- 541, 542, 12, 12, 541, 541, 543, 541, 543, 541, 541, 541, 541, 541, 12, 544,
- 545, 545, 545, 545, 545, 545, 546, 12, 547, 547, 547, 547, 547, 547, 548, 549,
- 547, 547, 12, 549, 550, 551, 12, 12, 249, 12, 12, 12, 552, 552, 552, 552,
- 552, 552, 12, 12, 553, 553, 553, 553, 553, 554, 12, 12, 552, 552, 555, 12,
- 260, 556, 260, 557, 558, 255, 255, 255, 559, 12, 12, 12, 560, 12, 12, 12,
- 256, 561, 12, 12, 12, 260, 12, 12, 562, 562, 562, 562, 562, 562, 562, 12,
- 563, 563, 563, 563, 563, 563, 564, 12, 563, 563, 563, 565, 563, 563, 565, 12,
- 563, 563, 566, 563, 0, 12, 12, 12, 7, 7, 7, 567, 7, 199, 12, 12,
- 0, 246, 12, 12, 0, 232, 316, 0, 0, 568, 228, 0, 0, 0, 568, 7,
- 213, 569, 7, 0, 0, 0, 570, 228, 8, 225, 12, 12, 0, 0, 234, 12,
- 0, 0, 0, 229, 571, 572, 316, 229, 0, 0, 240, 316, 0, 316, 0, 0,
- 0, 240, 232, 316, 0, 229, 0, 229, 0, 0, 240, 232, 0, 573, 239, 0,
- 229, 0, 0, 0, 0, 246, 0, 0, 0, 0, 0, 239, 574, 574, 574, 574,
- 574, 574, 574, 12, 12, 12, 575, 574, 576, 574, 574, 574, 2, 2, 2, 273,
- 12, 275, 273, 12, 241, 577, 241, 241, 241, 241, 578, 241, 579, 580, 577, 12,
- 19, 19, 19, 581, 12, 12, 12, 582, 583, 583, 583, 583, 583, 583, 583, 584,
- 583, 583, 583, 585, 583, 583, 585, 586, 587, 587, 587, 587, 587, 587, 587, 588,
- 589, 589, 589, 589, 589, 589, 590, 591, 592, 592, 592, 592, 592, 592, 593, 12,
- 151, 154, 151, 594, 151, 151, 151, 154, 595, 595, 595, 595, 595, 596, 595, 595,
- 595, 597, 12, 12, 598, 598, 598, 598, 598, 598, 598, 12, 598, 598, 599, 600,
- 0, 234, 12, 12, 29, 414, 29, 29, 601, 602, 414, 29, 50, 29, 603, 12,
- 604, 310, 603, 414, 601, 602, 603, 603, 601, 602, 50, 29, 50, 29, 414, 605,
- 29, 29, 606, 29, 29, 29, 29, 12, 414, 414, 606, 29, 51, 12, 12, 12,
- 12, 239, 0, 0, 607, 12, 12, 12, 246, 12, 12, 12, 0, 0, 12, 0,
- 0, 232, 131, 0, 0, 0, 12, 12, 0, 0, 0, 240, 0, 246, 12, 239,
- 608, 12, 12, 12, 247, 247, 609, 12, 610, 12, 12, 12, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, 942,
- 946, 948, 0, 962, 969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040,1041,
- 1042,1043,1047, 0, 0,1080,1081,1082,1086,1110, 0, 0,1124,1125,1126,1127,
- 1131,1133, 0,1147,1154,1155,1156,1161,1187,1188,1189,1193, 0,1219,1226,1227,
- 1228,1229,1233, 0, 0,1267,1268,1269,1273,1298, 0,1303, 943,1128, 944,1129,
- 954,1139, 958,1143, 959,1144, 960,1145, 961,1146, 964,1149, 0, 0, 973,1158,
- 974,1159, 975,1160, 983,1168, 978,1163, 988,1173, 990,1175, 991,1176, 993,1178,
- 994,1179, 0, 0,1004,1190,1005,1191,1006,1192,1014,1199,1007, 0, 0, 0,
- 1016,1201,1020,1206, 0,1022,1208,1025,1211,1023,1209, 0, 0, 0, 0,1032,
- 1218,1037,1223,1035,1221, 0, 0, 0,1044,1230,1045,1231,1049,1235, 0, 0,
- 1058,1244,1064,1250,1060,1246,1066,1252,1067,1253,1072,1258,1069,1255,1077,1264,
- 1074,1261, 0, 0,1083,1270,1084,1271,1085,1272,1088,1275,1089,1276,1096,1283,
- 1103,1290,1111,1299,1115,1118,1307,1120,1309,1121,1310, 0,1053,1239, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1093,1280, 0, 0, 0,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 705,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 706,
+ 0, 0, 1, 1, 0, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 5, 0, 6, 7, 7, 7, 8, 9, 10, 11, 12,
+ 13, 13, 13, 13, 14, 13, 13, 13, 13, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 23, 23, 26, 23, 27, 28, 29, 23, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 23, 23, 39, 40, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 82, 86, 86, 87, 88, 89, 90, 91, 82,
+ 92, 92, 92, 92, 92, 93, 94, 95, 96, 96, 96, 96, 96, 96, 96, 96,
+ 97, 97, 98, 97, 99, 100, 101, 97, 102, 97, 103, 104, 105, 106, 106, 107,
+ 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 111,
+ 112, 113, 114, 115, 116, 116, 117, 118, 119, 120, 120, 121, 120, 122, 108, 123,
+ 124, 125, 126, 127, 128, 129, 130, 116, 131, 132, 133, 134, 135, 136, 137, 82,
+ 138, 138, 139, 138, 140, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 4, 151, 152, 153, 4, 154, 7, 7, 155, 11, 156, 157, 11, 158, 159, 160,
+ 161, 0, 0, 162, 163, 0, 164, 165, 0, 166, 167, 4, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, 0, 0, 0, 0, 0,
+ 171, 171, 171, 171, 171, 171, 171, 171, 0, 0, 0, 172, 173, 0, 0, 0,
+ 174, 174, 174, 4, 175, 175, 175, 176, 93, 177, 178, 179, 180, 181, 181, 13,
+ 0, 0, 182, 82, 183, 184, 184, 185, 184, 184, 184, 184, 184, 184, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 96, 96, 198, 199, 0, 200,
+ 201, 0, 0, 202, 0, 0, 203, 204, 194, 194, 205, 0, 0, 0, 0, 0,
+ 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 0, 0,
+ 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 207, 206, 208, 209,
+ 210, 210, 210, 210, 210, 210, 210, 210, 210, 211, 13, 13, 13, 212, 212, 213,
+ 0, 214, 4, 4, 215, 4, 216, 217, 218, 219, 220, 221, 222, 222, 223, 40,
+ 224, 225, 226, 227, 228, 228, 229, 230, 231, 232, 233, 92, 234, 234, 235, 236,
+ 237, 238, 239, 240, 106, 106, 241, 242, 96, 96, 96, 96, 96, 243, 244, 245,
+ 82, 82, 82, 82, 82, 82, 82, 82, 184, 184, 184, 246, 184, 184, 247, 82,
+ 248, 249, 250, 23, 23, 23, 251, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 252, 23, 23, 253, 23, 254, 255, 256, 257, 258, 259, 23, 23, 23, 260,
+ 261, 1, 1, 262, 263, 201, 264, 265, 266, 267, 268, 82, 269, 269, 269, 270,
+ 271, 272, 11, 11, 273, 274, 187, 275, 82, 82, 82, 82, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 82, 287, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 302, 302, 302, 302, 302, 302, 302,
+ 302, 303, 304, 305, 306, 307, 82, 82, 308, 309, 310, 311, 312, 313, 82, 314,
+ 315, 316, 82, 82, 317, 318, 319, 320, 321, 322, 323, 324, 325, 82, 326, 327,
+ 328, 329, 330, 331, 332, 333, 82, 82, 334, 334, 335, 82, 336, 337, 336, 338,
+ 339, 340, 341, 342, 343, 82, 82, 82, 82, 82, 82, 344, 345, 346, 347, 348,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 357, 358, 359, 360, 360, 361, 362,
+ 363, 364, 365, 366, 367, 367, 367, 368, 369, 370, 371, 82, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 384, 385, 386, 387, 387, 388, 82,
+ 82, 82, 82, 82, 389, 390, 391, 82, 392, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 82, 82, 82, 82, 82, 402, 403, 82, 82, 82, 404, 404, 405,
+ 406, 407, 408, 82, 82, 409, 410, 411, 412, 412, 413, 414, 414, 415, 416, 417,
+ 418, 82, 82, 82, 82, 82, 419, 420, 421, 422, 423, 424, 425, 426, 82, 82,
+ 427, 428, 429, 430, 431, 432, 82, 82, 82, 82, 82, 82, 82, 82, 82, 433,
+ 434, 435, 436, 82, 82, 437, 438, 439, 440, 440, 440, 440, 440, 440, 440, 440,
+ 440, 440, 440, 440, 441, 82, 82, 82, 440, 440, 440, 442, 440, 440, 440, 440,
+ 440, 440, 443, 82, 82, 82, 82, 82, 82, 82, 82, 82, 444, 445, 445, 446,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 448, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 449, 450, 450, 450, 450, 450, 450, 450, 450,
+ 450, 450, 451, 82, 82, 82, 82, 82, 452, 453, 82, 82, 82, 82, 82, 82,
+ 212, 212, 212, 212, 212, 212, 212, 212, 212, 454, 455, 456, 457, 458, 459, 460,
+ 461, 461, 462, 463, 464, 82, 82, 82, 82, 82, 465, 466, 82, 82, 82, 82,
+ 82, 82, 467, 467, 468, 82, 82, 82, 469, 469, 470, 469, 471, 82, 82, 472,
+ 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 474,
+ 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 476, 477,
+ 478, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 479,
+ 480, 191, 191, 191, 191, 191, 191, 191, 191, 481, 482, 483, 484, 484, 484, 484,
+ 484, 484, 484, 484, 484, 484, 484, 485, 486, 486, 486, 487, 488, 489, 82, 82,
+ 0, 0, 0, 0, 0, 0, 0, 490, 0, 0, 0, 0, 0, 491, 82, 82,
+ 7, 492, 493, 0, 0, 0, 489, 82, 0, 0, 0, 0, 0, 0, 0, 494,
+ 0, 495, 0, 496, 497, 498, 0, 170, 11, 11, 499, 82, 82, 82, 491, 491,
+ 0, 0, 500, 501, 82, 82, 82, 82, 0, 0, 502, 0, 503, 504, 505, 0,
+ 506, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, 0, 0,
+ 0, 0, 0, 0, 0, 0, 510, 0, 511, 511, 511, 511, 511, 511, 511, 511,
+ 511, 511, 511, 511, 512, 513, 82, 82, 514, 515, 82, 82, 82, 82, 82, 82,
+ 516, 517, 13, 518, 519, 82, 82, 82, 520, 521, 522, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 523, 524, 525, 526, 82, 82, 82, 82, 82, 82, 527, 528,
+ 82, 82, 82, 82, 82, 82, 529, 530, 82, 82, 82, 82, 82, 82, 82, 531,
+ 532, 532, 532, 532, 532, 532, 533, 82, 534, 534, 535, 82, 82, 82, 82, 82,
+ 82, 82, 82, 536, 0, 537, 82, 82, 261, 182, 82, 82, 82, 82, 82, 82,
+ 538, 539, 540, 541, 542, 543, 82, 544, 0, 545, 0, 0, 491, 546, 547, 494,
+ 0, 0, 0, 0, 0, 548, 82, 549, 550, 551, 552, 553, 82, 82, 82, 82,
+ 0, 0, 0, 0, 0, 0, 554, 555, 0, 0, 0, 556, 0, 0, 490, 557,
+ 545, 0, 558, 0, 559, 560, 561, 82, 0, 0, 491, 562, 563, 0, 564, 565,
+ 0, 0, 0, 0, 258, 0, 0, 490, 184, 184, 184, 184, 184, 184, 184, 82,
+ 184, 247, 184, 184, 184, 184, 184, 184, 566, 184, 184, 184, 184, 184, 184, 184,
+ 184, 184, 184, 184, 184, 567, 184, 184, 184, 184, 184, 184, 184, 184, 184, 568,
+ 184, 184, 566, 82, 82, 82, 82, 82, 566, 82, 82, 82, 82, 82, 82, 82,
+ 184, 184, 569, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 570, 82, 82,
+ 571, 0, 0, 0, 82, 82, 82, 82, 7, 7, 7, 7, 7, 7, 7, 572,
+ 0, 0, 0, 0, 1, 2, 2, 3, 0, 4, 0, 4, 2, 2, 5, 2,
+ 2, 2, 2, 2, 2, 2, 2, 6, 7, 8, 0, 0, 9, 9, 9, 9,
+ 9, 9, 10, 11, 12, 13, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14,
+ 16, 17, 14, 14, 18, 18, 18, 18, 19, 18, 18, 18, 18, 18, 20, 21,
+ 21, 21, 22, 20, 21, 21, 21, 21, 21, 23, 24, 25, 25, 25, 25, 25,
+ 25, 26, 25, 25, 25, 27, 28, 26, 29, 30, 31, 32, 31, 31, 31, 31,
+ 33, 34, 35, 31, 31, 31, 36, 31, 31, 31, 31, 29, 37, 38, 37, 37,
+ 37, 37, 37, 37, 37, 39, 31, 31, 40, 40, 40, 40, 40, 40, 41, 26,
+ 42, 42, 42, 42, 42, 42, 42, 43, 44, 44, 44, 44, 44, 45, 44, 46,
+ 47, 47, 47, 48, 37, 49, 31, 31, 31, 50, 51, 31, 52, 31, 31, 31,
+ 53, 53, 53, 53, 53, 53, 54, 53, 55, 53, 53, 53, 56, 57, 58, 59,
+ 59, 60, 61, 62, 57, 63, 64, 65, 66, 59, 59, 67, 68, 69, 70, 71,
+ 71, 72, 73, 74, 69, 75, 76, 77, 78, 71, 79, 26, 80, 81, 82, 83,
+ 83, 84, 85, 86, 81, 87, 88, 26, 89, 83, 90, 91, 92, 93, 94, 95,
+ 95, 96, 97, 98, 93, 99, 100, 101, 102, 95, 95, 26, 103, 104, 105, 106,
+ 107, 104, 108, 109, 104, 105, 110, 26, 111, 108, 108, 112, 113, 114, 115, 113,
+ 113, 115, 113, 116, 114, 117, 118, 119, 120, 113, 121, 113, 122, 123, 124, 122,
+ 122, 124, 125, 126, 123, 127, 128, 128, 129, 122, 130, 26, 131, 132, 133, 131,
+ 131, 131, 131, 131, 132, 133, 134, 131, 135, 131, 131, 131, 136, 137, 138, 139,
+ 137, 137, 140, 141, 138, 142, 143, 137, 144, 137, 145, 26, 146, 147, 147, 147,
+ 147, 147, 147, 148, 147, 147, 147, 149, 26, 26, 26, 26, 150, 151, 152, 152,
+ 153, 152, 152, 154, 155, 156, 152, 157, 158, 158, 158, 158, 158, 159, 158, 158,
+ 158, 160, 159, 158, 158, 158, 158, 159, 158, 158, 158, 161, 158, 161, 162, 163,
+ 164, 164, 164, 164, 165, 165, 165, 165, 166, 167, 165, 165, 165, 165, 165, 168,
+ 169, 169, 169, 169, 170, 170, 170, 170, 170, 171, 172, 171, 170, 171, 170, 170,
+ 170, 170, 171, 172, 171, 170, 172, 170, 170, 170, 171, 170, 170, 170, 170, 173,
+ 170, 170, 170, 174, 170, 170, 170, 175, 176, 176, 176, 176, 176, 176, 177, 177,
+ 178, 178, 178, 178, 179, 179, 179, 180, 181, 181, 181, 181, 181, 182, 181, 183,
+ 184, 184, 185, 186, 187, 187, 188, 26, 189, 189, 190, 26, 191, 192, 193, 26,
+ 194, 194, 194, 194, 194, 194, 194, 195, 194, 196, 194, 196, 197, 198, 198, 199,
+ 198, 198, 198, 198, 198, 198, 198, 200, 198, 201, 178, 178, 178, 178, 202, 26,
+ 203, 203, 203, 204, 203, 205, 203, 205, 206, 203, 207, 207, 207, 208, 209, 26,
+ 210, 210, 210, 210, 210, 211, 210, 210, 210, 212, 210, 213, 214, 214, 214, 215,
+ 216, 216, 216, 216, 216, 216, 216, 217, 216, 216, 216, 218, 216, 219, 216, 219,
+ 216, 220, 9, 9, 9, 221, 26, 26, 222, 222, 222, 222, 222, 223, 222, 222,
+ 224, 224, 224, 224, 225, 225, 225, 225, 225, 225, 226, 227, 228, 228, 228, 228,
+ 228, 228, 228, 229, 228, 230, 231, 231, 231, 231, 231, 231, 18, 232, 165, 165,
+ 165, 165, 165, 233, 224, 26, 234, 9, 235, 236, 237, 238, 239, 240, 2, 2,
+ 2, 2, 2, 241, 242, 243, 2, 244, 2, 2, 2, 245, 14, 14, 246, 246,
+ 246, 246, 14, 247, 14, 14, 14, 246, 14, 14, 248, 14, 248, 14, 249, 250,
+ 14, 14, 251, 252, 0, 253, 0, 0, 254, 0, 255, 256, 0, 257, 2, 258,
+ 259, 26, 9, 9, 9, 9, 260, 26, 261, 262, 4, 0, 0, 263, 0, 0,
+ 2, 264, 0, 0, 0, 265, 26, 26, 0, 266, 26, 26, 267, 267, 267, 267,
+ 0, 0, 268, 0, 0, 0, 269, 0, 270, 270, 270, 270, 17, 17, 17, 17,
+ 17, 17, 271, 272, 166, 167, 273, 273, 273, 273, 273, 273, 273, 274, 275, 274,
+ 170, 170, 172, 26, 172, 172, 172, 172, 0, 0, 0, 276, 277, 277, 277, 278,
+ 277, 277, 277, 277, 277, 277, 279, 26, 277, 277, 280, 26, 26, 26, 0, 0,
+ 281, 0, 0, 0, 282, 283, 0, 284, 285, 286, 286, 286, 286, 286, 286, 286,
+ 286, 286, 287, 288, 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291,
+ 292, 293, 293, 293, 293, 293, 294, 169, 169, 295, 0, 0, 293, 293, 293, 293,
+ 276, 296, 290, 290, 169, 169, 169, 295, 169, 169, 169, 297, 0, 0, 290, 290,
+ 290, 290, 290, 298, 290, 290, 290, 0, 299, 299, 299, 299, 299, 300, 299, 299,
+ 301, 26, 302, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 304, 26, 26,
+ 305, 305, 305, 305, 305, 305, 305, 26, 306, 2, 2, 2, 2, 307, 2, 2,
+ 2, 308, 309, 258, 26, 26, 310, 2, 311, 311, 311, 311, 311, 312, 0, 265,
+ 313, 313, 313, 313, 313, 313, 313, 26, 314, 314, 314, 314, 315, 316, 314, 317,
+ 318, 318, 318, 318, 318, 319, 320, 320, 320, 320, 321, 322, 169, 169, 169, 323,
+ 324, 324, 324, 324, 324, 325, 324, 326, 164, 164, 164, 327, 328, 328, 328, 328,
+ 328, 328, 329, 26, 328, 330, 328, 331, 332, 332, 332, 332, 333, 26, 26, 334,
+ 335, 335, 336, 26, 337, 337, 337, 26, 172, 172, 2, 2, 2, 2, 2, 338,
+ 339, 340, 176, 176, 335, 335, 335, 335, 335, 341, 335, 342, 343, 26, 169, 169,
+ 295, 344, 169, 169, 169, 169, 169, 343, 277, 280, 277, 277, 277, 277, 277, 345,
+ 346, 26, 347, 348, 25, 25, 349, 350, 351, 25, 31, 31, 352, 26, 353, 31,
+ 31, 31, 31, 354, 31, 31, 355, 31, 31, 356, 26, 26, 26, 26, 31, 31,
+ 9, 9, 0, 265, 9, 357, 0, 0, 0, 0, 358, 0, 257, 359, 360, 31,
+ 31, 31, 31, 361, 362, 0, 0, 0, 363, 290, 289, 290, 290, 290, 290, 364,
+ 365, 365, 365, 366, 257, 257, 26, 367, 368, 369, 368, 368, 370, 368, 368, 371,
+ 368, 372, 368, 372, 368, 368, 368, 368, 368, 368, 368, 373, 374, 0, 0, 0,
+ 0, 0, 375, 0, 14, 252, 0, 376, 377, 26, 26, 26, 0, 0, 0, 378,
+ 379, 379, 379, 380, 381, 381, 381, 381, 381, 381, 382, 26, 383, 0, 0, 359,
+ 384, 384, 384, 384, 385, 386, 387, 387, 387, 388, 389, 389, 389, 389, 389, 390,
+ 391, 391, 391, 392, 393, 393, 393, 393, 394, 393, 395, 26, 396, 396, 396, 396,
+ 396, 396, 397, 397, 397, 397, 397, 397, 398, 398, 398, 399, 398, 400, 401, 401,
+ 401, 401, 402, 401, 401, 401, 401, 402, 403, 403, 403, 403, 403, 26, 404, 404,
+ 404, 404, 404, 404, 405, 406, 407, 408, 407, 408, 409, 407, 410, 407, 410, 411,
+ 412, 412, 412, 412, 412, 412, 413, 26, 414, 414, 414, 414, 414, 414, 415, 26,
+ 414, 414, 416, 26, 414, 26, 26, 26, 417, 2, 2, 2, 2, 2, 418, 419,
+ 420, 421, 422, 422, 422, 422, 423, 424, 425, 425, 426, 425, 427, 427, 427, 427,
+ 428, 428, 428, 429, 430, 428, 26, 26, 431, 431, 432, 433, 434, 434, 434, 435,
+ 436, 436, 436, 437, 438, 438, 438, 438, 439, 439, 439, 440, 439, 439, 441, 439,
+ 439, 439, 439, 439, 442, 443, 444, 445, 446, 446, 447, 448, 446, 449, 446, 449,
+ 450, 450, 450, 450, 451, 451, 451, 451, 452, 452, 452, 452, 453, 454, 453, 26,
+ 455, 455, 455, 455, 455, 455, 456, 457, 458, 458, 459, 458, 460, 460, 461, 460,
+ 462, 462, 463, 464, 26, 465, 26, 26, 466, 466, 466, 466, 466, 467, 26, 26,
+ 468, 468, 468, 468, 468, 468, 469, 26, 468, 468, 469, 470, 471, 471, 471, 471,
+ 471, 26, 471, 472, 473, 473, 473, 473, 474, 475, 473, 473, 474, 476, 26, 26,
+ 31, 31, 31, 50, 477, 477, 477, 477, 477, 478, 479, 26, 480, 26, 26, 26,
+ 26, 26, 26, 481, 482, 482, 482, 482, 482, 26, 483, 483, 483, 483, 483, 484,
+ 26, 26, 485, 485, 485, 486, 26, 26, 26, 26, 487, 487, 487, 488, 26, 26,
+ 489, 489, 490, 26, 491, 491, 491, 491, 491, 492, 493, 491, 491, 491, 492, 494,
+ 495, 495, 495, 495, 496, 497, 498, 498, 498, 499, 498, 500, 501, 501, 501, 501,
+ 501, 501, 502, 501, 501, 26, 503, 503, 503, 503, 504, 26, 505, 505, 505, 505,
+ 506, 137, 507, 26, 508, 508, 509, 508, 508, 508, 508, 508, 510, 26, 26, 26,
+ 511, 512, 513, 514, 513, 515, 516, 516, 516, 516, 516, 516, 516, 517, 516, 518,
+ 519, 520, 521, 522, 522, 523, 524, 525, 520, 526, 527, 528, 529, 530, 530, 26,
+ 531, 532, 531, 531, 531, 531, 533, 531, 534, 535, 533, 536, 537, 26, 26, 26,
+ 538, 538, 538, 538, 538, 538, 538, 539, 540, 26, 26, 26, 541, 541, 541, 541,
+ 541, 26, 541, 542, 543, 543, 543, 543, 543, 543, 544, 543, 543, 543, 543, 544,
+ 545, 545, 545, 545, 546, 26, 545, 547, 198, 548, 26, 26, 549, 549, 549, 549,
+ 549, 549, 549, 550, 549, 550, 164, 164, 551, 26, 26, 26, 552, 552, 552, 553,
+ 552, 554, 552, 552, 555, 26, 26, 26, 556, 556, 556, 556, 556, 556, 556, 557,
+ 558, 558, 558, 558, 558, 558, 559, 560, 561, 562, 563, 564, 564, 564, 565, 566,
+ 561, 26, 564, 567, 568, 569, 568, 568, 568, 568, 568, 569, 570, 26, 26, 26,
+ 571, 571, 571, 571, 571, 26, 572, 572, 572, 572, 572, 572, 573, 26, 178, 178,
+ 574, 574, 574, 574, 574, 574, 574, 575, 53, 576, 26, 26, 577, 577, 577, 577,
+ 578, 26, 577, 578, 579, 580, 579, 579, 579, 579, 581, 579, 582, 26, 579, 579,
+ 579, 583, 584, 584, 584, 584, 585, 584, 584, 586, 587, 26, 588, 589, 590, 590,
+ 590, 590, 588, 591, 590, 26, 590, 592, 593, 594, 595, 595, 595, 596, 597, 598,
+ 595, 599, 26, 26, 600, 600, 600, 601, 602, 602, 603, 602, 602, 602, 602, 604,
+ 602, 602, 602, 605, 26, 26, 606, 26, 108, 108, 108, 108, 108, 108, 607, 608,
+ 609, 609, 609, 609, 609, 609, 609, 610, 609, 611, 612, 26, 613, 26, 26, 26,
+ 26, 26, 614, 614, 614, 614, 614, 614, 614, 614, 615, 26, 616, 616, 616, 616,
+ 616, 616, 617, 26, 616, 616, 616, 618, 619, 619, 619, 619, 620, 26, 26, 26,
+ 621, 621, 621, 621, 621, 621, 621, 622, 305, 305, 305, 623, 624, 624, 624, 625,
+ 624, 626, 627, 627, 627, 627, 627, 627, 627, 627, 627, 628, 627, 629, 630, 630,
+ 630, 631, 631, 26, 632, 632, 632, 632, 633, 26, 632, 634, 634, 632, 632, 635,
+ 632, 632, 26, 26, 636, 636, 636, 636, 636, 636, 636, 637, 638, 638, 638, 638,
+ 638, 638, 638, 639, 640, 640, 640, 640, 640, 641, 640, 640, 640, 642, 640, 640,
+ 643, 26, 345, 26, 644, 644, 644, 644, 644, 644, 644, 26, 645, 645, 645, 645,
+ 645, 645, 646, 26, 26, 26, 26, 647, 644, 648, 26, 26, 26, 26, 649, 650,
+ 651, 286, 286, 286, 652, 26, 653, 26, 26, 26, 654, 26, 655, 26, 656, 656,
+ 656, 656, 656, 656, 656, 656, 656, 657, 658, 658, 658, 658, 658, 659, 658, 660,
+ 658, 661, 658, 662, 359, 26, 26, 26, 0, 0, 0, 265, 0, 0, 359, 26,
+ 9, 663, 9, 9, 221, 26, 0, 0, 0, 0, 276, 26, 257, 362, 0, 0,
+ 664, 665, 0, 666, 667, 668, 0, 0, 0, 669, 0, 0, 246, 26, 26, 26,
+ 0, 0, 257, 26, 0, 0, 0, 259, 0, 0, 254, 0, 0, 0, 0, 254,
+ 670, 671, 0, 672, 673, 0, 0, 0, 269, 674, 254, 254, 0, 0, 0, 675,
+ 676, 677, 678, 0, 276, 0, 0, 0, 0, 268, 0, 0, 679, 679, 679, 679,
+ 679, 680, 26, 681, 682, 679, 26, 26, 2, 2, 2, 346, 683, 419, 26, 26,
+ 684, 270, 270, 685, 686, 687, 18, 18, 18, 688, 26, 26, 26, 689, 26, 26,
+ 690, 690, 690, 690, 690, 691, 690, 692, 690, 693, 26, 26, 26, 26, 694, 694,
+ 694, 695, 26, 26, 696, 696, 696, 696, 696, 696, 696, 697, 26, 26, 698, 698,
+ 698, 698, 698, 699, 26, 26, 700, 700, 700, 700, 700, 701, 172, 702, 170, 172,
+ 703, 703, 703, 703, 704, 703, 705, 26, 706, 706, 706, 706, 706, 707, 706, 708,
+ 26, 26, 362, 0, 0, 0, 376, 26, 709, 31, 31, 31, 710, 711, 712, 713,
+ 714, 715, 710, 716, 710, 712, 712, 717, 31, 718, 31, 719, 720, 718, 31, 719,
+ 26, 26, 721, 26, 0, 359, 0, 0, 0, 257, 362, 0, 362, 0, 362, 0,
+ 0, 276, 26, 26, 722, 0, 0, 0, 723, 26, 0, 0, 0, 0, 0, 359,
+ 0, 259, 265, 26, 276, 26, 26, 26, 0, 0, 0, 724, 0, 376, 0, 376,
+ 0, 0, 257, 725, 0, 359, 259, 26, 0, 26, 0, 265, 0, 26, 0, 0,
+ 0, 276, 0, 359, 265, 26, 26, 26, 0, 276, 0, 376, 0, 726, 0, 0,
+ 257, 722, 0, 727, 0, 265, 0, 259, 277, 277, 277, 280, 345, 26, 277, 277,
+ 728, 26, 277, 277, 277, 729, 277, 277, 277, 277, 26, 26, 730, 26, 26, 26,
+ 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 939, 940, 941, 942, 946, 948, 0, 962, 969, 970, 971, 976,
+ 1001,1002,1003,1008, 0,1033,1040,1041,1042,1043,1047, 0, 0,1080,1081,1082,
+ 1086,1110, 0, 0,1124,1125,1126,1127,1131,1133, 0,1147,1154,1155,1156,1161,
+ 1187,1188,1189,1193, 0,1219,1226,1227,1228,1229,1233, 0, 0,1267,1268,1269,
+ 1273,1298, 0,1303, 943,1128, 944,1129, 954,1139, 958,1143, 959,1144, 960,1145,
+ 961,1146, 964,1149, 0, 0, 973,1158, 974,1159, 975,1160, 983,1168, 978,1163,
+ 988,1173, 990,1175, 991,1176, 993,1178, 994,1179, 0, 0,1004,1190,1005,1191,
+ 1006,1192,1014,1199,1007, 0, 0, 0,1016,1201,1020,1206, 0,1022,1208,1025,
+ 1211,1023,1209, 0, 0, 0, 0,1032,1218,1037,1223,1035,1221, 0, 0, 0,
+ 1044,1230,1045,1231,1049,1235, 0, 0,1058,1244,1064,1250,1060,1246,1066,1252,
+ 1067,1253,1072,1258,1069,1255,1077,1264,1074,1261, 0, 0,1083,1270,1084,1271,
+ 1085,1272,1088,1275,1089,1276,1096,1283,1103,1290,1111,1299,1115,1118,1307,1120,
+ 1309,1121,1310, 0,1053,1239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,1093,1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 949,1134,1010,1195,1050,1236,1090,1277,1341,1368,1340,1367,1342,1369,1339,
+ 1366, 0,1320,1347,1418,1419,1323,1350, 0, 0, 992,1177,1018,1204,1055,1241,
+ 1416,1417,1415,1424,1202, 0, 0, 0, 987,1172, 0, 0,1031,1217,1321,1348,
+ 1322,1349,1338,1365, 950,1135, 951,1136, 979,1164, 980,1165,1011,1196,1012,1197,
+ 1051,1237,1052,1238,1061,1247,1062,1248,1091,1278,1092,1279,1071,1257,1076,1263,
+ 0, 0, 997,1182, 0, 0, 0, 0, 0, 0, 945,1130, 982,1167,1337,1364,
+ 1335,1362,1046,1232,1422,1423,1113,1301, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8, 9, 0, 10,1425, 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, 1, 0, 0, 0, 0, 0, 0,1314,1427, 5,1434,1438,1443, 0,
+ 1450, 0,1455,1461,1514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1446,1458,
+ 1468,1476,1480,1486,1517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1489,1503,
+ 1494,1500,1508, 0, 0, 0, 0,1520,1521, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,1526,1528, 0,1525, 0, 0, 0,1522, 0, 0, 0, 0,
+ 1536,1532,1539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1534, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1556, 0, 0,
+ 0, 0, 0, 0,1548,1550, 0,1547, 0, 0, 0,1567, 0, 0, 0, 0,
+ 1558,1554,1561, 0, 0, 0, 0, 0, 0, 0,1568,1569, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,1529,1551, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,1523,1545,1524,1546, 0, 0,1527,1549, 0, 0,1570,1571,
+ 1530,1552,1531,1553, 0, 0,1533,1555,1535,1557,1537,1559, 0, 0,1572,1573,
+ 1544,1566,1538,1560,1540,1562,1541,1563,1542,1564, 0, 0,1543,1565, 0, 0,
+ 0, 0, 0, 0, 0, 0,1606,1607,1609,1608,1610, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,1613, 0,1611, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,1612, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1620, 0, 0,
+ 0, 0, 0, 0, 0,1623, 0, 0,1624, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1614,1615,1616,1617,
+ 1618,1619,1621,1622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1628,
+ 1629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1625,1626, 0,1627, 0, 0, 0,1634, 0, 0,1635, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1630,1631,1632,
+ 0, 0,1633, 0, 0, 0, 0, 0, 0, 0, 0, 0,1639, 0, 0,1638,
+ 1640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1636,1637, 0, 0, 0, 0, 0, 0,1641, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1642,1644,
+ 1643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1645, 0, 0, 0,
+ 0, 0, 0, 0,1646, 0, 0, 0, 0, 0, 0,1648,1649, 0,1647,1650,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1651,1653,
+ 1652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1654, 0,
+ 1655,1657,1656, 0, 0, 0, 0,1659, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,1660, 0, 0, 0, 0,1661, 0, 0, 0, 0,1662, 0, 0, 0, 0,
+ 1663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1658, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,1664, 0,1665,1673, 0,1674, 0, 0, 0,
+ 0, 0, 0, 0, 0,1666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,1668, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,1669, 0, 0, 0, 0,1670, 0, 0, 0, 0,1671, 0, 0, 0, 0,
+ 1672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1667, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1675, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1676, 0,1677, 0,1678, 0,
+ 1679, 0,1680, 0, 0, 0,1681, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1682,
+ 0,1683, 0, 0,1684,1685, 0,1686, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 953,1138, 955,1140, 956,1141, 957,1142,1324,1351, 963,1148,
+ 965,1150, 968,1153, 966,1151, 967,1152,1378,1380,1379,1381, 984,1169, 985,1170,
+ 1420,1421, 986,1171, 989,1174, 995,1180, 998,1183, 996,1181, 999,1184,1000,1185,
+ 1015,1200,1329,1356,1017,1203,1019,1205,1021,1207,1024,1210,1687,1688,1027,1213,
+ 1026,1212,1028,1214,1029,1215,1030,1216,1034,1220,1036,1222,1039,1225,1038,1224,
+ 1334,1361,1336,1363,1382,1384,1383,1385,1056,1242,1057,1243,1059,1245,1063,1249,
+ 1689,1690,1065,1251,1068,1254,1070,1256,1386,1387,1388,1389,1691,1692,1073,1259,
+ 1075,1262,1079,1266,1078,1265,1095,1282,1098,1285,1097,1284,1390,1391,1392,1393,
+ 1099,1286,1100,1287,1101,1288,1102,1289,1105,1292,1104,1291,1106,1294,1107,1295,
+ 1108,1296,1114,1302,1119,1308,1122,1311,1123,1312,1186,1260,1293,1305, 0,1394,
+ 0, 0, 0, 0, 952,1137, 947,1132,1317,1344,1316,1343,1319,1346,1318,1345,
+ 1693,1695,1371,1375,1370,1374,1373,1377,1372,1376,1694,1696, 981,1166, 977,1162,
+ 972,1157,1326,1353,1325,1352,1328,1355,1327,1354,1697,1698,1009,1194,1013,1198,
+ 1054,1240,1048,1234,1331,1358,1330,1357,1333,1360,1332,1359,1699,1700,1396,1401,
+ 1395,1400,1398,1403,1397,1402,1399,1404,1094,1281,1087,1274,1406,1411,1405,1410,
+ 1408,1413,1407,1412,1409,1414,1109,1297,1117,1306,1116,1304,1112,1300, 0, 0,
+ 0, 0, 0, 0,1471,1472,1701,1705,1702,1706,1703,1707,1430,1431,1715,1719,
+ 1716,1720,1717,1721,1477,1478,1729,1731,1730,1732, 0, 0,1435,1436,1733,1735,
+ 1734,1736, 0, 0,1481,1482,1737,1741,1738,1742,1739,1743,1439,1440,1751,1755,
+ 1752,1756,1753,1757,1490,1491,1765,1768,1766,1769,1767,1770,1447,1448,1771,1774,
+ 1772,1775,1773,1776,1495,1496,1777,1779,1778,1780, 0, 0,1451,1452,1781,1783,
+ 1782,1784, 0, 0,1504,1505,1785,1788,1786,1789,1787,1790, 0,1459, 0,1791,
+ 0,1792, 0,1793,1509,1510,1794,1798,1795,1799,1796,1800,1462,1463,1808,1812,
+ 1809,1813,1810,1814,1467, 21,1475, 22,1479, 23,1485, 24,1493, 27,1499, 28,
+ 1507, 29, 0, 0,1704,1708,1709,1710,1711,1712,1713,1714,1718,1722,1723,1724,
+ 1725,1726,1727,1728,1740,1744,1745,1746,1747,1748,1749,1750,1754,1758,1759,1760,
+ 1761,1762,1763,1764,1797,1801,1802,1803,1804,1805,1806,1807,1811,1815,1816,1817,
+ 1818,1819,1820,1821,1470,1469,1822,1474,1465, 0,1473,1825,1429,1428,1426, 12,
+ 1432, 0, 26, 0, 0,1315,1823,1484,1466, 0,1483,1829,1433, 13,1437, 14,
+ 1441,1826,1827,1828,1488,1487,1513, 19, 0, 0,1492,1515,1445,1444,1442, 15,
+ 0,1831,1832,1833,1502,1501,1516, 25,1497,1498,1506,1518,1457,1456,1454, 17,
+ 1453,1313, 11, 3, 0, 0,1824,1512,1519, 0,1511,1830,1449, 16,1460, 18,
+ 1464, 4, 0, 0, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1834,1835,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 949,1134,1010,1195,1050,1236,1090,
- 1277,1341,1368,1340,1367,1342,1369,1339,1366, 0,1320,1347,1418,1419,1323,1350,
- 0, 0, 992,1177,1018,1204,1055,1241,1416,1417,1415,1424,1202, 0, 0, 0,
- 987,1172, 0, 0,1031,1217,1321,1348,1322,1349,1338,1365, 950,1135, 951,1136,
- 979,1164, 980,1165,1011,1196,1012,1197,1051,1237,1052,1238,1061,1247,1062,1248,
- 1091,1278,1092,1279,1071,1257,1076,1263, 0, 0, 997,1182, 0, 0, 0, 0,
- 0, 0, 945,1130, 982,1167,1337,1364,1335,1362,1046,1232,1422,1423,1113,1301,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 10,
- 1425, 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, 1, 0, 0, 0, 0, 0,
- 0,1314,1427, 5,1434,1438,1443, 0,1450, 0,1455,1461,1514, 0, 0, 0,
+ 0, 0,1836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,1837,1839,1838, 0, 0, 0, 0,1840, 0, 0, 0, 0,1841, 0, 0,
+ 1842, 0, 0, 0, 0, 0, 0, 0,1843, 0,1844, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,1845, 0, 0,1846, 0, 0,1847, 0,1848, 0, 0,
+ 0, 0, 0, 0, 937, 0,1850, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,1849, 936, 938,1851,1852, 0, 0,1853,1854, 0, 0,1855,1856, 0, 0,
+ 0, 0, 0, 0,1857,1858, 0, 0,1861,1862, 0, 0,1863,1864, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1446,1458,1468,1476,1480,1486,1517, 0, 0, 0,
+ 1867,1868,1869,1870,1859,1860,1865,1866, 0, 0, 0, 0, 0, 0,1871,1872,
+ 1873,1874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1489,1503,1494,1500,1508, 0, 0, 0, 0,1520,
- 1521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1526,1528, 0,1525,
- 0, 0, 0,1522, 0, 0, 0, 0,1536,1532,1539, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,1534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,1556, 0, 0, 0, 0, 0, 0,1548,1550, 0,1547,
- 0, 0, 0,1567, 0, 0, 0, 0,1558,1554,1561, 0, 0, 0, 0, 0,
- 0, 0,1568,1569, 0, 0, 0, 0, 0, 0, 0, 0, 0,1529,1551, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1523,1545,1524,1546,
- 0, 0,1527,1549, 0, 0,1570,1571,1530,1552,1531,1553, 0, 0,1533,1555,
- 1535,1557,1537,1559, 0, 0,1572,1573,1544,1566,1538,1560,1540,1562,1541,1563,
- 1542,1564, 0, 0,1543,1565, 0, 0, 0, 0, 0, 0, 0, 0,1606,1607,
- 1609,1608,1610, 0, 0, 0, 0, 0, 0, 0, 0, 0,1613, 0,1611, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1612,
+ 1875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1877, 0,1878, 0,1879, 0,1880, 0,1881, 0,1882, 0,1883, 0,1884, 0,
+ 1885, 0,1886, 0,1887, 0,1888, 0, 0,1889, 0,1890, 0,1891, 0, 0,
+ 0, 0, 0, 0,1892,1893, 0,1894,1895, 0,1896,1897, 0,1898,1899, 0,
+ 1900,1901, 0, 0, 0, 0, 0, 0,1876, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,1902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1904, 0,1905, 0,1906, 0,1907, 0,1908, 0,1909, 0,1910, 0,1911, 0,
+ 1912, 0,1913, 0,1914, 0,1915, 0, 0,1916, 0,1917, 0,1918, 0, 0,
+ 0, 0, 0, 0,1919,1920, 0,1921,1922, 0,1923,1924, 0,1925,1926, 0,
+ 1927,1928, 0, 0, 0, 0, 0, 0,1903, 0, 0,1929,1930,1931,1932, 0,
+ 0, 0,1933, 0, 710, 385, 724, 715, 455, 103, 186, 825, 825, 242, 751, 205,
+ 241, 336, 524, 601, 663, 676, 688, 738, 411, 434, 474, 500, 649, 746, 799, 108,
+ 180, 416, 482, 662, 810, 275, 462, 658, 692, 344, 618, 679, 293, 388, 440, 492,
+ 740, 116, 146, 168, 368, 414, 481, 527, 606, 660, 665, 722, 781, 803, 809, 538,
+ 553, 588, 642, 758, 811, 701, 233, 299, 573, 612, 487, 540, 714, 779, 232, 267,
+ 412, 445, 457, 585, 594, 766, 167, 613, 149, 148, 560, 589, 648, 768, 708, 345,
+ 411, 704, 105, 259, 313, 496, 518, 174, 542, 120, 307, 101, 430, 372, 584, 183,
+ 228, 529, 650, 697, 424, 732, 428, 349, 632, 355, 517, 110, 135, 147, 403, 580,
+ 624, 700, 750, 170, 193, 245, 297, 374, 463, 543, 763, 801, 812, 815, 162, 384,
+ 420, 730, 287, 330, 337, 366, 459, 476, 509, 558, 591, 610, 726, 652, 734, 759,
+ 154, 163, 198, 473, 683, 697, 292, 311, 353, 423, 572, 494, 113, 217, 259, 280,
+ 314, 499, 506, 603, 608, 752, 778, 782, 788, 117, 557, 748, 774, 320, 109, 126,
+ 260, 265, 373, 411, 479, 523, 655, 737, 823, 380, 765, 161, 395, 398, 438, 451,
+ 502, 516, 537, 583, 791, 136, 340, 769, 122, 273, 446, 727, 305, 322, 400, 496,
+ 771, 155, 190, 269, 377, 391, 406, 432, 501, 519, 599, 684, 687, 749, 776, 175,
+ 452, 191, 480, 510, 659, 772, 805, 813, 397, 444, 619, 566, 568, 575, 491, 471,
+ 707, 111, 636, 156, 153, 288, 346, 578, 256, 435, 383, 729, 680, 767, 694, 295,
+ 128, 210, 0, 0, 227, 0, 379, 0, 0, 150, 493, 525, 544, 551, 552, 556,
+ 783, 576, 604, 0, 661, 0, 703, 0, 0, 735, 743, 0, 0, 0, 793, 794,
+ 795, 808, 741, 773, 118, 127, 130, 166, 169, 177, 207, 213, 215, 226, 229, 268,
+ 270, 317, 327, 329, 335, 369, 375, 381, 404, 441, 448, 458, 477, 484, 503, 539,
+ 545, 547, 546, 548, 549, 550, 554, 555, 561, 564, 569, 591, 593, 595, 598, 607,
+ 620, 625, 625, 651, 690, 695, 705, 706, 716, 717, 733, 735, 777, 786, 790, 315,
+ 869, 623, 0, 0, 102, 145, 134, 115, 129, 138, 165, 171, 207, 202, 206, 212,
+ 227, 231, 240, 243, 250, 254, 294, 296, 303, 308, 319, 325, 321, 329, 326, 335,
+ 341, 357, 360, 362, 370, 379, 388, 389, 393, 421, 424, 438, 456, 454, 458, 465,
+ 477, 535, 485, 490, 493, 507, 512, 514, 521, 522, 525, 526, 528, 533, 532, 541,
+ 565, 569, 574, 586, 591, 597, 607, 637, 647, 674, 691, 693, 695, 698, 703, 699,
+ 705, 704, 702, 706, 709, 717, 728, 736, 747, 754, 770, 777, 783, 784, 786, 787,
+ 790, 802, 825, 848, 847, 857, 55, 65, 66, 883, 892, 916, 822, 824, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,1620, 0, 0, 0, 0, 0, 0, 0,1623, 0, 0,
- 1624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,1614,1615,1616,1617,1618,1619,1621,1622, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,1628,1629, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,1625,1626, 0,1627, 0, 0, 0,1634,
- 0, 0,1635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,1630,1631,1632, 0, 0,1633, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,1639, 0, 0,1638,1640, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,1636,1637, 0, 0, 0, 0, 0, 0,
- 1641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1642,1644,1643, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,1645, 0, 0, 0, 0, 0, 0, 0,1646, 0, 0, 0,
- 0, 0, 0,1648,1649, 0,1647,1650, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1651,1653,1652, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1654, 0,1655,1657,1656, 0, 0, 0, 0,1659,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,1660, 0, 0, 0, 0,1661, 0,
- 0, 0, 0,1662, 0, 0, 0, 0,1663, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,1658, 0, 0, 0, 0, 0, 0, 0, 0, 0,1664,
- 0,1665,1673, 0,1674, 0, 0, 0, 0, 0, 0, 0, 0,1666, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1668,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,1669, 0, 0, 0, 0,1670, 0,
- 0, 0, 0,1671, 0, 0, 0, 0,1672, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,1667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,1675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,1676, 0,1677, 0,1678, 0,1679, 0,1680, 0, 0, 0,1681, 0,
+ 0,1586, 0,1605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1602,1603,
+ 1934,1935,1574,1575,1576,1577,1579,1580,1581,1583,1584, 0,1585,1587,1588,1589,
+ 1591, 0,1592, 0,1593,1594, 0,1595,1596, 0,1598,1599,1600,1601,1604,1582,
+ 1578,1590,1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1936, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,1937, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1938, 0,
+ 1939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1940,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,1682, 0,1683, 0, 0,1684,1685, 0,1686,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 953,1138, 955,1140,
- 956,1141, 957,1142,1324,1351, 963,1148, 965,1150, 968,1153, 966,1151, 967,1152,
- 1378,1380,1379,1381, 984,1169, 985,1170,1420,1421, 986,1171, 989,1174, 995,1180,
- 998,1183, 996,1181, 999,1184,1000,1185,1015,1200,1329,1356,1017,1203,1019,1205,
- 1021,1207,1024,1210,1687,1688,1027,1213,1026,1212,1028,1214,1029,1215,1030,1216,
- 1034,1220,1036,1222,1039,1225,1038,1224,1334,1361,1336,1363,1382,1384,1383,1385,
- 1056,1242,1057,1243,1059,1245,1063,1249,1689,1690,1065,1251,1068,1254,1070,1256,
- 1386,1387,1388,1389,1691,1692,1073,1259,1075,1262,1079,1266,1078,1265,1095,1282,
- 1098,1285,1097,1284,1390,1391,1392,1393,1099,1286,1100,1287,1101,1288,1102,1289,
- 1105,1292,1104,1291,1106,1294,1107,1295,1108,1296,1114,1302,1119,1308,1122,1311,
- 1123,1312,1186,1260,1293,1305, 0,1394, 0, 0, 0, 0, 952,1137, 947,1132,
- 1317,1344,1316,1343,1319,1346,1318,1345,1693,1695,1371,1375,1370,1374,1373,1377,
- 1372,1376,1694,1696, 981,1166, 977,1162, 972,1157,1326,1353,1325,1352,1328,1355,
- 1327,1354,1697,1698,1009,1194,1013,1198,1054,1240,1048,1234,1331,1358,1330,1357,
- 1333,1360,1332,1359,1699,1700,1396,1401,1395,1400,1398,1403,1397,1402,1399,1404,
- 1094,1281,1087,1274,1406,1411,1405,1410,1408,1413,1407,1412,1409,1414,1109,1297,
- 1117,1306,1116,1304,1112,1300, 0, 0, 0, 0, 0, 0,1471,1472,1701,1705,
- 1702,1706,1703,1707,1430,1431,1715,1719,1716,1720,1717,1721,1477,1478,1729,1731,
- 1730,1732, 0, 0,1435,1436,1733,1735,1734,1736, 0, 0,1481,1482,1737,1741,
- 1738,1742,1739,1743,1439,1440,1751,1755,1752,1756,1753,1757,1490,1491,1765,1768,
- 1766,1769,1767,1770,1447,1448,1771,1774,1772,1775,1773,1776,1495,1496,1777,1779,
- 1778,1780, 0, 0,1451,1452,1781,1783,1782,1784, 0, 0,1504,1505,1785,1788,
- 1786,1789,1787,1790, 0,1459, 0,1791, 0,1792, 0,1793,1509,1510,1794,1798,
- 1795,1799,1796,1800,1462,1463,1808,1812,1809,1813,1810,1814,1467, 21,1475, 22,
- 1479, 23,1485, 24,1493, 27,1499, 28,1507, 29, 0, 0,1704,1708,1709,1710,
- 1711,1712,1713,1714,1718,1722,1723,1724,1725,1726,1727,1728,1740,1744,1745,1746,
- 1747,1748,1749,1750,1754,1758,1759,1760,1761,1762,1763,1764,1797,1801,1802,1803,
- 1804,1805,1806,1807,1811,1815,1816,1817,1818,1819,1820,1821,1470,1469,1822,1474,
- 1465, 0,1473,1825,1429,1428,1426, 12,1432, 0, 26, 0, 0,1315,1823,1484,
- 1466, 0,1483,1829,1433, 13,1437, 14,1441,1826,1827,1828,1488,1487,1513, 19,
- 0, 0,1492,1515,1445,1444,1442, 15, 0,1831,1832,1833,1502,1501,1516, 25,
- 1497,1498,1506,1518,1457,1456,1454, 17,1453,1313, 11, 3, 0, 0,1824,1512,
- 1519, 0,1511,1830,1449, 16,1460, 18,1464, 4, 0, 0, 30, 31, 0, 0,
+ 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1943,
+ 1944, 0, 0, 0, 0, 0, 0,1945, 0,1946, 0, 0, 0, 0, 0, 0,
+ 0, 0,1947, 0, 0,1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,1950, 0,1949,1951, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1953,
+ 1952, 0,1954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1955,1956,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1957, 0, 0, 0,
+ 0, 0, 0, 0, 0,1958,1961,1959,1965,1960,1962,1964,1963, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1967,1966,1968, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 20, 0, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1834,1835, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1836, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,1837,1839,1838, 0, 0, 0, 0,
- 1840, 0, 0, 0, 0,1841, 0, 0,1842, 0, 0, 0, 0, 0, 0, 0,
- 1843, 0,1844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1845, 0, 0,
- 1846, 0, 0,1847, 0,1848, 0, 0, 0, 0, 0, 0, 937, 0,1850, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,1849, 936, 938,1851,1852, 0, 0,
- 1853,1854, 0, 0,1855,1856, 0, 0, 0, 0, 0, 0,1857,1858, 0, 0,
- 1861,1862, 0, 0,1863,1864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,1867,1868,1869,1870,1859,1860,1865,1866,
- 0, 0, 0, 0, 0, 0,1871,1872,1873,1874, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,1875, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,1877, 0,1878, 0,1879, 0,1880, 0,
- 1881, 0,1882, 0,1883, 0,1884, 0,1885, 0,1886, 0,1887, 0,1888, 0,
- 0,1889, 0,1890, 0,1891, 0, 0, 0, 0, 0, 0,1892,1893, 0,1894,
- 1895, 0,1896,1897, 0,1898,1899, 0,1900,1901, 0, 0, 0, 0, 0, 0,
- 1876, 0, 0, 0, 0, 0, 0, 0, 0, 0,1902, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,1904, 0,1905, 0,1906, 0,1907, 0,
- 1908, 0,1909, 0,1910, 0,1911, 0,1912, 0,1913, 0,1914, 0,1915, 0,
- 0,1916, 0,1917, 0,1918, 0, 0, 0, 0, 0, 0,1919,1920, 0,1921,
- 1922, 0,1923,1924, 0,1925,1926, 0,1927,1928, 0, 0, 0, 0, 0, 0,
- 1903, 0, 0,1929,1930,1931,1932, 0, 0, 0,1933, 0, 710, 385, 724, 715,
- 455, 103, 186, 825, 825, 242, 751, 205, 241, 336, 524, 601, 663, 676, 688, 738,
- 411, 434, 474, 500, 649, 746, 799, 108, 180, 416, 482, 662, 810, 275, 462, 658,
- 692, 344, 618, 679, 293, 388, 440, 492, 740, 116, 146, 168, 368, 414, 481, 527,
- 606, 660, 665, 722, 781, 803, 809, 538, 553, 588, 642, 758, 811, 701, 233, 299,
- 573, 612, 487, 540, 714, 779, 232, 267, 412, 445, 457, 585, 594, 766, 167, 613,
- 149, 148, 560, 589, 648, 768, 708, 345, 411, 704, 105, 259, 313, 496, 518, 174,
- 542, 120, 307, 101, 430, 372, 584, 183, 228, 529, 650, 697, 424, 732, 428, 349,
- 632, 355, 517, 110, 135, 147, 403, 580, 624, 700, 750, 170, 193, 245, 297, 374,
- 463, 543, 763, 801, 812, 815, 162, 384, 420, 730, 287, 330, 337, 366, 459, 476,
- 509, 558, 591, 610, 726, 652, 734, 759, 154, 163, 198, 473, 683, 697, 292, 311,
- 353, 423, 572, 494, 113, 217, 259, 280, 314, 499, 506, 603, 608, 752, 778, 782,
- 788, 117, 557, 748, 774, 320, 109, 126, 260, 265, 373, 411, 479, 523, 655, 737,
- 823, 380, 765, 161, 395, 398, 438, 451, 502, 516, 537, 583, 791, 136, 340, 769,
- 122, 273, 446, 727, 305, 322, 400, 496, 771, 155, 190, 269, 377, 391, 406, 432,
- 501, 519, 599, 684, 687, 749, 776, 175, 452, 191, 480, 510, 659, 772, 805, 813,
- 397, 444, 619, 566, 568, 575, 491, 471, 707, 111, 636, 156, 153, 288, 346, 578,
- 256, 435, 383, 729, 680, 767, 694, 295, 128, 210, 0, 0, 227, 0, 379, 0,
- 0, 150, 493, 525, 544, 551, 552, 556, 783, 576, 604, 0, 661, 0, 703, 0,
- 0, 735, 743, 0, 0, 0, 793, 794, 795, 808, 741, 773, 118, 127, 130, 166,
- 169, 177, 207, 213, 215, 226, 229, 268, 270, 317, 327, 329, 335, 369, 375, 381,
- 404, 441, 448, 458, 477, 484, 503, 539, 545, 547, 546, 548, 549, 550, 554, 555,
- 561, 564, 569, 591, 593, 595, 598, 607, 620, 625, 625, 651, 690, 695, 705, 706,
- 716, 717, 733, 735, 777, 786, 790, 315, 869, 623, 0, 0, 102, 145, 134, 115,
- 129, 138, 165, 171, 207, 202, 206, 212, 227, 231, 240, 243, 250, 254, 294, 296,
- 303, 308, 319, 325, 321, 329, 326, 335, 341, 357, 360, 362, 370, 379, 388, 389,
- 393, 421, 424, 438, 456, 454, 458, 465, 477, 535, 485, 490, 493, 507, 512, 514,
- 521, 522, 525, 526, 528, 533, 532, 541, 565, 569, 574, 586, 591, 597, 607, 637,
- 647, 674, 691, 693, 695, 698, 703, 699, 705, 704, 702, 706, 709, 717, 728, 736,
- 747, 754, 770, 777, 783, 784, 786, 787, 790, 802, 825, 848, 847, 857, 55, 65,
- 66, 883, 892, 916, 822, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,1586, 0,1605, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1602,1603,1934,1935,1574,1575,1576,1577,1579,1580,
- 1581,1583,1584, 0,1585,1587,1588,1589,1591, 0,1592, 0,1593,1594, 0,1595,
- 1596, 0,1598,1599,1600,1601,1604,1582,1578,1590,1597, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1936, 0,1937, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,1938, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1939,1940, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,1944,1943, 0,1945, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1946,1947, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1949,1950,1951,1952,1953,1954,
- 1955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,1956,1957,1958,1960,1959,1961, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 104, 107, 826,
- 114, 118, 119, 121, 123, 124, 127, 125, 34, 830, 130, 131, 132, 137, 827, 35,
- 133, 139, 829, 142, 143, 112, 144, 145, 924, 151, 152, 37, 157, 158, 159, 160,
- 38, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 182, 182,
- 833, 468, 184, 185, 834, 187, 188, 189, 196, 192, 194, 195, 197, 199, 200, 201,
- 203, 204, 204, 206, 208, 209, 211, 218, 213, 219, 214, 216, 153, 234, 221, 222,
- 223, 220, 225, 224, 230, 835, 235, 236, 237, 238, 239, 244, 836, 837, 247, 248,
- 249, 246, 251, 39, 40, 253, 255, 255, 838, 257, 258, 259, 261, 839, 262, 263,
- 301, 264, 41, 266, 270, 272, 271, 841, 274, 842, 277, 276, 278, 281, 282, 42,
- 283, 284, 285, 286, 43, 843, 44, 289, 290, 291, 293, 934, 298, 845, 845, 621,
- 300, 300, 45, 852, 894, 302, 304, 46, 306, 309, 310, 312, 316, 48, 47, 317,
- 846, 318, 323, 324, 325, 324, 328, 329, 333, 331, 332, 334, 335, 336, 338, 339,
- 342, 343, 347, 351, 849, 350, 348, 352, 354, 359, 850, 361, 358, 356, 49, 363,
- 365, 367, 364, 50, 369, 371, 851, 376, 386, 378, 53, 381, 52, 51, 140, 141,
- 387, 382, 614, 78, 388, 389, 390, 394, 392, 856, 54, 399, 396, 402, 404, 858,
- 405, 401, 407, 55, 408, 409, 410, 413, 859, 415, 56, 417, 860, 418, 57, 419,
- 422, 424, 425, 861, 840, 862, 426, 863, 429, 431, 427, 433, 437, 441, 438, 439,
- 442, 443, 864, 436, 449, 450, 58, 454, 453, 865, 447, 460, 866, 867, 461, 466,
- 465, 464, 59, 467, 470, 469, 472, 828, 475, 868, 478, 870, 483, 485, 486, 871,
- 488, 489, 872, 873, 495, 497, 60, 498, 61, 61, 504, 505, 507, 508, 511, 62,
- 513, 874, 515, 875, 518, 844, 520, 876, 877, 878, 63, 64, 528, 880, 879, 881,
- 882, 530, 531, 531, 533, 66, 534, 67, 68, 884, 536, 538, 541, 69, 885, 549,
- 886, 887, 556, 559, 70, 561, 562, 563, 888, 889, 889, 567, 71, 890, 570, 571,
- 72, 891, 577, 73, 581, 579, 582, 893, 587, 74, 590, 592, 596, 75, 895, 896,
- 76, 897, 600, 898, 602, 605, 607, 899, 900, 609, 901, 611, 853, 77, 615, 616,
- 79, 617, 252, 902, 903, 854, 855, 621, 622, 731, 80, 627, 626, 628, 164, 629,
- 630, 631, 633, 904, 632, 634, 639, 640, 635, 641, 646, 651, 638, 643, 644, 645,
- 905, 907, 906, 81, 653, 654, 656, 911, 657, 908, 82, 83, 909, 910, 84, 664,
- 665, 666, 667, 669, 668, 671, 670, 674, 672, 673, 675, 85, 677, 678, 86, 681,
- 682, 912, 685, 686, 87, 689, 36, 913, 914, 88, 89, 696, 702, 709, 711, 915,
- 712, 713, 718, 719, 917, 831, 721, 720, 723, 832, 725, 728, 918, 919, 739, 742,
- 744, 920, 745, 753, 756, 757, 755, 760, 761, 921, 762, 90, 764, 922, 91, 775,
- 279, 780, 923, 925, 92, 93, 785, 926, 94, 927, 787, 787, 789, 928, 792, 95,
- 796, 797, 798, 800, 96, 929, 802, 804, 806, 97, 98, 807, 930, 99, 931, 932,
- 933, 814, 100, 816, 817, 818, 819, 820, 821, 935, 0, 0,
+ 0, 0,1969,1970,1971,1972,1973,1974,1975, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1976,
+ 1977,1978,1980,1979,1981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 106, 104, 107, 826, 114, 118, 119, 121, 123, 124, 127, 125,
+ 34, 830, 130, 131, 132, 137, 827, 35, 133, 139, 829, 142, 143, 112, 144, 145,
+ 924, 151, 152, 37, 157, 158, 159, 160, 38, 165, 166, 169, 171, 172, 173, 174,
+ 176, 177, 178, 179, 181, 182, 182, 182, 833, 468, 184, 185, 834, 187, 188, 189,
+ 196, 192, 194, 195, 197, 199, 200, 201, 203, 204, 204, 206, 208, 209, 211, 218,
+ 213, 219, 214, 216, 153, 234, 221, 222, 223, 220, 225, 224, 230, 835, 235, 236,
+ 237, 238, 239, 244, 836, 837, 247, 248, 249, 246, 251, 39, 40, 253, 255, 255,
+ 838, 257, 258, 259, 261, 839, 262, 263, 301, 264, 41, 266, 270, 272, 271, 841,
+ 274, 842, 277, 276, 278, 281, 282, 42, 283, 284, 285, 286, 43, 843, 44, 289,
+ 290, 291, 293, 934, 298, 845, 845, 621, 300, 300, 45, 852, 894, 302, 304, 46,
+ 306, 309, 310, 312, 316, 48, 47, 317, 846, 318, 323, 324, 325, 324, 328, 329,
+ 333, 331, 332, 334, 335, 336, 338, 339, 342, 343, 347, 351, 849, 350, 348, 352,
+ 354, 359, 850, 361, 358, 356, 49, 363, 365, 367, 364, 50, 369, 371, 851, 376,
+ 386, 378, 53, 381, 52, 51, 140, 141, 387, 382, 614, 78, 388, 389, 390, 394,
+ 392, 856, 54, 399, 396, 402, 404, 858, 405, 401, 407, 55, 408, 409, 410, 413,
+ 859, 415, 56, 417, 860, 418, 57, 419, 422, 424, 425, 861, 840, 862, 426, 863,
+ 429, 431, 427, 433, 437, 441, 438, 439, 442, 443, 864, 436, 449, 450, 58, 454,
+ 453, 865, 447, 460, 866, 867, 461, 466, 465, 464, 59, 467, 470, 469, 472, 828,
+ 475, 868, 478, 870, 483, 485, 486, 871, 488, 489, 872, 873, 495, 497, 60, 498,
+ 61, 61, 504, 505, 507, 508, 511, 62, 513, 874, 515, 875, 518, 844, 520, 876,
+ 877, 878, 63, 64, 528, 880, 879, 881, 882, 530, 531, 531, 533, 66, 534, 67,
+ 68, 884, 536, 538, 541, 69, 885, 549, 886, 887, 556, 559, 70, 561, 562, 563,
+ 888, 889, 889, 567, 71, 890, 570, 571, 72, 891, 577, 73, 581, 579, 582, 893,
+ 587, 74, 590, 592, 596, 75, 895, 896, 76, 897, 600, 898, 602, 605, 607, 899,
+ 900, 609, 901, 611, 853, 77, 615, 616, 79, 617, 252, 902, 903, 854, 855, 621,
+ 622, 731, 80, 627, 626, 628, 164, 629, 630, 631, 633, 904, 632, 634, 639, 640,
+ 635, 641, 646, 651, 638, 643, 644, 645, 905, 907, 906, 81, 653, 654, 656, 911,
+ 657, 908, 82, 83, 909, 910, 84, 664, 665, 666, 667, 669, 668, 671, 670, 674,
+ 672, 673, 675, 85, 677, 678, 86, 681, 682, 912, 685, 686, 87, 689, 36, 913,
+ 914, 88, 89, 696, 702, 709, 711, 915, 712, 713, 718, 719, 917, 831, 721, 720,
+ 723, 832, 725, 728, 918, 919, 739, 742, 744, 920, 745, 753, 756, 757, 755, 760,
+ 761, 921, 762, 90, 764, 922, 91, 775, 279, 780, 923, 925, 92, 93, 785, 926,
+ 94, 927, 787, 787, 789, 928, 792, 95, 796, 797, 798, 800, 96, 929, 802, 804,
+ 806, 97, 98, 807, 930, 99, 931, 932, 933, 814, 100, 816, 817, 818, 819, 820,
+ 821, 935, 0, 0,
};
static const int16_t
_hb_ucd_i16[92] =
@@ -4403,12 +4615,12 @@ _hb_ucd_i16[92] =
static inline uint_fast8_t
_hb_ucd_gc (unsigned u)
{
- return u<1114110u?_hb_ucd_u8[6808+(((_hb_ucd_u8[1312+(((_hb_ucd_u16[((_hb_ucd_u8[544+(((_hb_ucd_u8[u>>1>>3>>3>>4])<<4)+((u>>1>>3>>3)&15u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2;
+ return u<1114110u?_hb_ucd_u8[6472+(((_hb_ucd_u8[816+(((_hb_ucd_u16[((_hb_ucd_u8[272+(((_hb_ucd_u8[u>>1>>3>>4>>4])<<4)+((u>>1>>3>>4)&15u))])<<4)+((u>>1>>3)&15u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2;
}
static inline uint_fast8_t
_hb_ucd_ccc (unsigned u)
{
- return u<125259u?_hb_ucd_u8[8800+(((_hb_ucd_u8[8244+(((_hb_ucd_u8[7784+(((_hb_ucd_u8[7432+(((_hb_ucd_u8[7186+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0;
+ return u<125259u?_hb_ucd_u8[8504+(((_hb_ucd_u8[7936+(((_hb_ucd_u8[7460+(((_hb_ucd_u8[7100+(((_hb_ucd_u8[6854+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0;
}
static inline unsigned
_hb_ucd_b4 (const uint8_t* a, unsigned i)
@@ -4418,55 +4630,55 @@ _hb_ucd_b4 (const uint8_t* a, unsigned i)
static inline int_fast16_t
_hb_ucd_bmg (unsigned u)
{
- return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[9692+(((_hb_ucd_u8[9460+(((_hb_ucd_u8[9364+(((_hb_ucd_b4(9300+_hb_ucd_u8,u>>1>>2>>3>>3))<<3)+((u>>1>>2>>3)&7u))])<<3)+((u>>1>>2)&7u))])<<2)+((u>>1)&3u))])<<1)+((u)&1u)]:0;
+ return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[9396+(((_hb_ucd_u8[9164+(((_hb_ucd_u8[9068+(((_hb_ucd_b4(9004+_hb_ucd_u8,u>>1>>2>>3>>3))<<3)+((u>>1>>2>>3)&7u))])<<3)+((u>>1>>2)&7u))])<<2)+((u>>1)&3u))])<<1)+((u)&1u)]:0;
}
static inline uint_fast8_t
_hb_ucd_sc (unsigned u)
{
- return u<918000u?_hb_ucd_u8[11126+(((_hb_ucd_u16[4040+(((_hb_ucd_u16[2048+(((_hb_ucd_u8[10390+(((_hb_ucd_u8[9940+(u>>2>>2>>3>>4)])<<4)+((u>>2>>2>>3)&15u))])<<3)+((u>>2>>2)&7u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:2;
+ return u<918000u?_hb_ucd_u8[10398+(((_hb_ucd_u16[3952+(((_hb_ucd_u16[2624+(((_hb_ucd_u8[9870+(((_hb_ucd_u8[9644+(u>>3>>2>>3>>4)])<<4)+((u>>3>>2>>3)&15u))])<<3)+((u>>3>>2)&7u))])<<2)+((u>>3)&3u))])<<3)+((u)&7u))]:2;
}
static inline uint_fast16_t
_hb_ucd_dm (unsigned u)
{
- return u<195102u?_hb_ucd_u16[6748+(((_hb_ucd_u8[13952+(((_hb_ucd_u8[13570+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0;
+ return u<195102u?_hb_ucd_u16[6244+(((_hb_ucd_u8[16628+(((_hb_ucd_u8[16246+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0;
}
#else
static const uint8_t
-_hb_ucd_u8[13386] =
+_hb_ucd_u8[13730] =
{
0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 9, 10, 7, 7, 7, 7, 7, 11, 12, 12, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 21, 21, 21, 21, 23, 7, 7,
- 7, 24, 21, 21, 21, 25, 26, 27, 21, 28, 29, 30, 31, 32, 33, 34,
+ 14, 15, 16, 17, 18, 19, 20, 7, 21, 22, 22, 22, 23, 24, 7, 7,
+ 7, 25, 22, 22, 22, 26, 27, 28, 22, 29, 30, 31, 32, 33, 34, 35,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 35, 21, 36,
- 7, 7, 7, 7, 37, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 38, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 21, 22, 36,
+ 7, 7, 7, 7, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 38, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
@@ -4486,30 +4698,30 @@ _hb_ucd_u8[13386] =
100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
100,100, 34, 34, 34, 34,101,102, 34, 34,103,104,105,106,107,108,
34, 34,109,110,111,112,113,114,115,116,117,118, 34, 34, 34,119,
- 120,121,122,123,124,125,126,127, 34,128,129,111,130,131,132,133,
- 134,135,136,137,138,139,140,111,141,142,111,143,144,145,146,111,
- 147,148,149,150,151,152,153,111,154,155,156,157,111,158,159,160,
- 34, 34, 34, 34, 34, 34, 34, 34,161, 34, 34,111,111,111,111,111,
- 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,162,
- 34, 34, 34, 34, 34, 34, 34, 34,163,111,111,111,111,111,111,111,
+ 120,121,122,123,124,125,126,127, 34,128,129,130,131,132,133,134,
+ 135,136,137,138,139,140,141,142,143,144,111,145,146,147,148,111,
+ 149,150,151,152,153,154,155,156,157,158,159,160,111,161,162,163,
+ 34, 34, 34, 34, 34, 34, 34, 34,164, 34, 34,111,111,111,111,111,
+ 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,165,
+ 34, 34, 34, 34, 34, 34, 34, 34,166, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111,
111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,
- 111,111,111,111,111,111,111,111, 34, 34, 34, 34, 34,111,111,111,
- 34, 34, 34, 34,164,165,166, 34,111,111,111,111,167,168,169,170,
+ 111,111,167,111,111,111,111,111,111,111,111,111,111,111,111,111,
+ 34, 34, 34, 34,168,169,170, 34,111,111,171,111,172,173,174,175,
34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111,111,111,
111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,119,
34, 34, 34, 34, 34, 34,111,111,111,111,111,111,111,111,111,111,
- 111,111,111,111,111,111,111,111, 34,171,111,111,111,111,111,111,
- 111,111,111,111,111,111,111,111,111,111,111,111,111,111,172, 67,
- 67, 67,173,174,175,130, 65,111,176,177,178,179,180,181,182,183,
- 67, 67, 67, 67,184,185,111,111,111,111,111,111,111,111,186,111,
- 187,188,189,111,111,190,111,111,111,191,111,111,111,111,111, 34,
- 34,192,193,111,111,111,111,111,130,194,195,111, 34,196,111,111,
- 67, 67,197, 67, 67,111, 67,198, 67, 67, 67, 67, 67, 67, 67, 67,
- 67, 67, 67, 67, 67, 67, 67,199,111,111,111,111,111,111,111,111,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111,
+ 111,111,111,111,111,111,111,111, 34,176,111,111,111,111,111,111,
+ 111,111,111,111,111,111,111,111, 67,177, 67, 67, 67, 67,178, 67,
+ 67, 67,179,180,181,131, 65,111,182,183,184,185,186,187,188,189,
+ 67, 67, 67, 67,190,191,111,111,111,111,111,111,111,111,192,111,
+ 193,194,195,111,111,196,111,111,111,197,111,198,111,111,111, 34,
+ 34,199,200,111,111,111,111,111,131,201,202,111, 34,203,111,111,
+ 67, 67,204, 67, 67,111, 67,205, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67,177,111,111,111,111,111,111,111,111,
34, 34, 34, 34, 34,111,111,111,111,111,111,111,111,111,111,111,
34, 34, 34, 34, 34, 34, 34, 34,111,111,111,111,111,111,111,111,
- 200,111,188,188,111,111,111,111,111,111,111,111,111,111,111,111,
+ 206,111,194,194,111,111,111,111,111,111,111,111,111,111,111,111,
0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2,
7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16,
@@ -4544,8 +4756,8 @@ _hb_ucd_u8[13386] =
36, 36, 36, 36, 36, 64, 43, 43, 43, 43, 40, 21, 2, 40, 69, 20,
36, 36, 36, 43, 43, 69, 43, 43, 43, 43, 69, 43, 69, 43, 43, 43,
2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 36, 36, 64, 43, 43, 2,
- 36, 36, 36, 36, 74, 36, 36, 36, 59, 59, 59, 59, 43, 43, 43, 43,
- 36, 36, 36, 36, 75, 43, 43, 43, 43, 76, 43, 43, 43, 43, 43, 43,
+ 36, 36, 36, 36, 74, 36, 36, 36, 59, 59, 59, 75, 43, 43, 43, 43,
+ 36, 36, 36, 36, 76, 43, 43, 43, 43, 75, 43, 43, 43, 43, 43, 43,
43, 77, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 77, 65, 78,
79, 43, 43, 43, 77, 78, 79, 78, 64, 43, 43, 43, 36, 36, 36, 36,
36, 43, 2, 7, 7, 7, 7, 7, 80, 36, 36, 36, 36, 36, 36, 36,
@@ -4590,130 +4802,135 @@ _hb_ucd_u8[13386] =
36, 43, 77, 78, 78, 78, 78, 81, 36, 43, 97, 2, 2, 2, 2, 2,
36, 43, 43, 43, 43, 43, 43, 43, 36, 36, 43, 79, 43, 43, 43, 78,
78, 78, 78, 77, 79, 43, 43, 43, 43, 43, 2, 80, 2, 60, 64, 43,
- 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 98, 2, 56, 43, 76,
- 36, 75, 36, 36, 36, 36, 36, 36, 36, 36, 64, 65, 36, 36, 36, 36,
+ 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 98, 2, 56, 43, 75,
+ 36, 76, 36, 36, 36, 36, 36, 36, 36, 36, 64, 65, 36, 36, 36, 36,
36, 36, 36, 36, 64, 36, 36, 36, 43, 77, 78, 79, 77, 78, 78, 78,
78, 77, 78, 78, 79, 43, 43, 43, 61, 61, 2, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 27, 27, 61, 36, 36, 36, 64, 77, 79, 43, 2,
36, 36, 82, 77, 43, 43, 43, 43, 77, 77, 79, 43, 43, 43, 77, 78,
78, 79, 43, 43, 43, 43, 43, 43, 2, 2, 2, 80, 2, 2, 2, 2,
43, 43, 43, 43, 43, 43, 43, 99, 43, 43, 81, 36, 36, 36, 36, 36,
- 36, 36, 77, 43, 43, 77, 77, 78, 78, 77, 81, 36, 36, 36, 36, 36,
+ 36, 36, 77, 43, 43, 77, 77, 78, 78, 77, 81, 36, 36, 36, 36, 2,
89, 61, 61, 61, 61, 47, 43, 43, 43, 43, 61, 61, 61, 61, 21, 2,
43, 81, 36, 36, 36, 36, 36, 36, 82, 43, 43, 78, 43, 79, 43, 36,
36, 36, 36, 77, 43, 78, 79, 79, 43, 78, 78, 78, 78, 78, 2, 2,
36, 36, 78, 78, 78, 78, 43, 43, 43, 43, 78, 43, 43, 57, 2, 2,
7, 7, 7, 7, 7, 7, 86, 36, 36, 36, 36, 36, 40, 40, 40, 2,
- 43, 57, 43, 43, 43, 43, 43, 43, 77, 43, 43, 43, 65, 36, 64, 36,
- 36, 36, 65, 82, 43, 36, 36, 36, 16, 16, 16, 16, 16, 16, 40, 40,
- 40, 40, 40, 40, 40, 44, 16, 16, 16, 16, 16, 16, 44, 16, 16, 16,
- 16, 16, 16, 16, 16,100, 40, 40, 32, 32, 32, 16, 16, 16, 16, 32,
- 16, 16, 16, 16, 11, 11, 11, 11, 16, 16, 16, 16, 34, 11, 11, 11,
- 16, 16, 16, 16,101,101,101,101, 16, 16, 16, 16, 11, 11,102,103,
- 41, 16, 16, 16, 11, 11,102, 41, 16, 16, 16, 16, 11, 11,104, 41,
- 105,105,105,105,105,106, 59, 59, 51, 51, 51, 2,107,108,107,108,
- 2, 2, 2, 2,109, 59, 59,110, 2, 2, 2, 2,111,112, 2,113,
- 114, 2,115,116, 2, 2, 2, 2, 2, 9,114, 2, 2, 2, 2,117,
- 59, 59, 59, 59, 59, 59, 59, 59,118, 40, 27, 27, 27, 8,115,119,
- 27, 27, 27, 27, 27, 8,115, 94, 20, 20, 20, 20, 20, 20, 20, 20,
- 43, 43, 43, 43, 43, 43,120, 48, 99, 48, 99, 43, 43, 43, 43, 43,
- 61,121, 61,122, 61, 34, 11, 16, 11, 32,122, 61, 46, 11, 11, 61,
- 61, 61,121,121,121, 11, 11,123, 11, 11, 35, 36, 39, 61, 16, 11,
- 8, 8, 46, 16, 16, 26, 61,124, 95, 95, 95, 95, 95, 95, 95, 95,
- 95,125,126, 95,127, 61, 61, 61, 8, 8,128, 61, 61, 8, 61, 61,
- 128, 26, 61,128, 61, 61, 61,128, 61, 61, 61, 61, 61, 61, 61, 8,
- 61,128,128, 61, 61, 61, 61, 61, 61, 61, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 61, 61, 61, 61, 4, 4, 61, 61,
- 8, 61, 61, 61,129,130, 61, 61, 61, 61, 61, 61, 61, 61,128, 61,
- 61, 61, 61, 61, 61, 26, 8, 8, 8, 8, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 8, 8, 8, 61, 61, 61, 61, 61, 61, 61,
- 27, 27, 27, 27, 27, 27, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27,
- 61, 61, 61, 26, 61, 61, 61, 61, 26, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 8, 8, 8, 8, 61, 61, 61, 61, 61, 61, 61, 26,
- 61, 61, 61, 61, 4, 4, 4, 4, 4, 4, 4, 27, 27, 27, 27, 27,
- 27, 27, 61, 61, 61, 61, 61, 61, 8, 8,115,131, 8, 8, 8, 8,
- 8, 8, 8, 4, 4, 4, 4, 4, 8,115,132,132,132,132,132,132,
- 132,132,132,132,131, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8,
- 8, 8, 8, 8, 8, 8, 4, 8, 8, 8,128, 26, 8, 8,128, 61,
- 32, 11, 32, 34, 34, 34, 34, 11, 32, 32, 34, 16, 16, 16, 40, 11,
- 32, 32,124, 61, 61,122, 34,133, 43, 32, 16, 16, 50, 2, 90, 2,
- 36, 36, 36, 36, 36, 36, 36, 75, 2, 2, 2, 2, 2, 2, 2, 56,
- 2,107,107, 2,111,112,107, 2, 2, 2, 2, 6, 2, 98,107, 2,
- 107, 4, 4, 4, 4, 2, 2, 80, 2, 2, 2, 2, 2, 51, 2, 2,
- 98,134, 2, 2, 2, 2, 2, 2, 61, 2,135,132,132,132,136, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 1, 2,137,138, 4, 4, 4, 4,
- 4, 61, 4, 4, 4, 4,139, 94,140, 95, 95, 95, 95, 43, 43, 78,
- 141, 40, 40, 61, 95,142, 58, 61, 72, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 64,143,144, 63, 36, 36, 36, 36, 36, 58, 40, 63,
- 61, 27, 27, 61, 61, 61, 61, 61, 27, 27, 27, 27, 27, 61, 61, 61,
- 61, 61, 61, 61, 27, 27, 27, 27,145, 27, 27, 27, 27, 27, 27, 27,
- 36, 36, 75, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,146, 2,
- 32, 32, 32, 32, 32, 32, 32, 64, 48,147, 43, 43, 43, 43, 43, 80,
- 32, 32, 32, 32, 32, 32, 40, 43, 36, 36, 36, 95, 95, 95, 95, 95,
- 43, 2, 2, 2, 2, 2, 2, 2, 41, 41, 41,144, 40, 40, 40, 40,
- 41, 32, 32, 32, 32, 32, 32, 32, 16, 32, 32, 32, 32, 32, 32, 32,
- 44, 16, 16, 16, 34, 34, 34, 32, 32, 32, 32, 32, 42,148, 34, 35,
- 32, 32, 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 11, 11, 32,
- 11, 11, 32, 32, 32, 32, 32, 32, 32, 32, 11, 11, 34, 16, 16, 16,
- 32, 16, 16, 32, 32, 16, 16, 16, 16, 40,149, 35, 40, 35, 36, 36,
- 36, 65, 36, 65, 36, 64, 36, 36, 36, 82, 79, 77, 61, 61, 43, 43,
- 27, 27, 27, 61,150, 61, 61, 61, 36, 36, 2, 2, 2, 2, 2, 2,
- 78, 36, 36, 36, 36, 36, 36, 36, 36, 36, 78, 78, 78, 78, 78, 78,
- 78, 78, 43, 43, 43, 43, 43, 2, 43, 36, 36, 36, 2, 66, 66, 64,
- 36, 36, 36, 43, 43, 43, 43, 2, 36, 36, 36, 64, 43, 43, 43, 43,
- 43, 78, 78, 78, 78, 78, 78, 97, 36, 64, 78, 43, 43, 78, 43, 78,
- 97, 2, 2, 2, 2, 2, 2, 80, 7, 7, 7, 7, 7, 7, 7, 2,
- 36, 36, 64, 63, 36, 36, 36, 36, 36, 36, 36, 36, 64, 43, 43, 77,
- 79, 77, 79, 43, 43, 43, 43, 43, 36, 64, 36, 36, 36, 36, 77, 78,
- 7, 7, 7, 7, 7, 7, 2, 2, 63, 36, 36, 71, 61, 82, 77, 36,
- 65, 43, 65, 64, 65, 36, 36, 43, 36, 36, 36, 36, 36, 36, 75, 2,
- 36, 36, 36, 36, 36, 82, 43, 78, 2, 75,151, 43, 43, 43, 43, 43,
- 16, 16, 16, 16, 16,103, 40, 40, 16, 16, 16, 16,100, 41, 41, 41,
- 36, 82, 79, 78, 77, 97, 79, 43,152,152,152,152,152,152,152,152,
- 153,153,153,153,153,153,153,153, 16, 16, 16, 16, 16, 16, 35, 65,
- 36, 36, 36, 36,154, 36, 36, 36, 36, 41, 41, 41, 41, 41, 41, 41,
- 41, 74, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,132,
- 36, 36, 36, 36, 36, 36, 36, 71, 36, 36, 36, 36, 36, 36,150, 61,
- 2, 2, 2,135,116, 2, 2, 2, 6,155,156,132,132,132,132,132,
- 132,132,116,135,116, 2,113,157, 2, 2, 2, 2,139,132,132,116,
- 2,158, 8, 8, 60, 2, 2, 2, 36, 36, 36, 36, 36, 36, 36,159,
- 2, 2, 3, 2, 4, 5, 6, 2, 16, 16, 16, 16, 16, 17, 18,115,
- 116, 4, 2, 36, 36, 36, 36, 36, 63, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 40, 20,160, 53, 20, 26, 8,128, 61,
- 61, 61, 61, 61,161, 59, 61, 61, 2, 2, 2, 90, 27, 27, 27, 27,
- 27, 27, 27, 84, 61, 61, 61, 61, 95, 95,127, 27, 84, 61, 61, 61,
- 61, 61, 61, 61, 61, 27, 61, 61, 61, 61, 61, 61, 61, 61, 47, 43,
- 162,162,162,162,162,162,162,162,163, 27, 27, 27, 27, 27, 27, 27,
- 27, 27, 27, 27, 27, 27, 87, 36,138, 36, 36, 36, 36, 95, 95, 95,
- 36, 36, 36, 36, 36, 36, 36, 58,164, 95, 95, 95, 95, 95, 95, 95,
- 11, 11, 11, 32, 16, 16, 16, 16, 36, 36, 36, 58, 27, 27, 27, 27,
- 36, 36, 36, 71,145, 27, 27, 27, 36, 36, 36,165, 27, 27, 27, 27,
- 36, 36, 36, 36, 36,165, 27, 27, 36, 36, 36, 27, 27, 27, 27, 30,
- 36, 36, 36, 36, 36, 36, 27, 36, 64, 43, 43, 43, 43, 43, 43, 43,
- 36, 36, 36, 36, 43, 43, 43, 43, 36, 36, 36, 36, 36, 36,165, 30,
- 36, 36, 36, 36, 36, 36,165, 27, 36, 36, 36, 36, 72, 36, 36, 36,
- 36, 36, 64, 43, 43,163, 27, 27, 36, 36, 36, 36, 58, 2, 2, 2,
- 36, 36, 36, 36, 27, 27, 27, 27, 16, 16, 16, 16, 16, 27, 27, 27,
- 36, 36, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 64,166, 51,
- 27, 27, 27, 87, 36, 36, 36, 36,163, 27, 30, 2, 2, 2, 2, 2,
- 36, 43, 43, 2, 2, 2, 2, 2, 36, 36,165, 27, 27, 27, 27, 27,
- 79, 81, 36, 36, 36, 36, 36, 36, 43, 43, 43, 57, 2, 2, 2, 2,
- 2, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 7, 7, 7, 7,
- 65, 64, 65, 36, 36, 36, 36, 64, 78, 79, 43, 77, 79, 57, 73, 2,
- 2, 43, 43, 43, 43, 43, 67, 59, 36, 36, 36, 64, 43, 43, 79, 43,
- 43, 43, 43, 7, 7, 7, 7, 7, 2, 2, 82, 81, 36, 36, 36, 36,
- 36, 64, 2, 36, 36, 36, 36, 36, 36, 82, 78, 43, 43, 43, 43, 77,
- 81, 36, 58, 2, 56, 43, 57, 79, 7, 7, 7, 7, 7, 58, 58, 2,
- 90, 27, 27, 27, 27, 27, 27, 27, 36, 36, 36, 36, 36, 36, 78, 79,
- 43, 78, 77, 43, 2, 2, 2, 65, 36, 36, 36, 36, 36, 36, 36, 64,
- 77, 78, 78, 78, 78, 78, 78, 78, 36, 36, 36, 82, 78, 78, 81, 36,
- 36, 78, 78, 43, 43, 43, 43, 43, 36, 36, 82, 78, 43, 43, 43, 43,
- 78, 43, 77, 65, 36, 58, 2, 2, 7, 7, 7, 7, 7, 2, 2, 65,
- 78, 79, 43, 43, 77, 77, 78, 79, 77, 43, 36, 66, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 82, 78, 43, 43, 43, 78, 78, 43, 79,
- 57, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 43, 43,
- 78, 79, 43, 43, 43, 77, 79, 79, 57, 2, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 64, 79, 78, 43, 43, 43, 79, 58, 2, 2, 2,
+ 16, 16, 16, 16, 34, 16, 16, 16, 43, 57, 43, 43, 43, 43, 43, 43,
+ 77, 43, 43, 43, 65, 36, 64, 36, 36, 36, 65, 82, 43, 36, 36, 36,
+ 16, 16, 16, 16, 16, 16, 40, 40, 40, 40, 40, 40, 40, 44, 16, 16,
+ 16, 16, 16, 16, 44, 16, 16, 16, 16, 16, 16, 16, 16,100, 40, 40,
+ 32, 32, 32, 16, 16, 16, 16, 32, 16, 16, 16, 16, 11, 11, 11, 11,
+ 16, 16, 16, 16, 34, 11, 11, 11, 16, 16, 16, 16,101,101,101,101,
+ 16, 16, 16, 16, 11, 11,102,103, 41, 16, 16, 16, 11, 11,102, 41,
+ 16, 16, 16, 16, 11, 11,104, 41,105,105,105,105,105,106, 59, 59,
+ 51, 51, 51, 2,107,108,107,108, 2, 2, 2, 2,109, 59, 59,110,
+ 2, 2, 2, 2,111,112, 2,113,114, 2,115,116, 2, 2, 2, 2,
+ 2, 9,114, 2, 2, 2, 2,117, 59, 59, 59, 59, 59, 59, 59, 59,
+ 118, 40, 27, 27, 27, 8,115,119, 27, 27, 27, 27, 27, 8,115, 94,
+ 20, 20, 20, 20, 20, 20, 20, 20, 43, 43, 43, 43, 43, 43,120, 48,
+ 99, 48, 99, 43, 43, 43, 43, 43, 61,121, 61,122, 61, 34, 11, 16,
+ 11, 32,122, 61, 46, 11, 11, 61, 61, 61,121,121,121, 11, 11,123,
+ 11, 11, 35, 36, 39, 61, 16, 11, 8, 8, 46, 16, 16, 26, 61,124,
+ 95, 95, 95, 95, 95, 95, 95, 95, 95,125,126, 95,127, 61, 61, 61,
+ 8, 8,128, 61, 61, 8, 61, 61,128, 26, 61,128, 61, 61, 61,128,
+ 61, 61, 61, 61, 61, 61, 61, 8, 61,128,128, 61, 61, 61, 61, 61,
+ 61, 61, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 61, 61, 61, 61, 4, 4, 61, 61, 8, 61, 61, 61,129,130, 61, 61,
+ 61, 61, 61, 61, 61, 61,128, 61, 61, 61, 61, 61, 61, 26, 8, 8,
+ 8, 8, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 8, 8,
+ 8, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27, 27, 27, 27, 61, 61,
+ 61, 61, 61, 61, 61, 27, 27, 27, 61, 61, 61, 26, 61, 61, 61, 61,
+ 26, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 8, 8, 8, 8,
+ 61, 61, 61, 61, 61, 61, 61, 26, 61, 61, 61, 61, 4, 4, 4, 4,
+ 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 61, 61, 61, 61, 61, 61,
+ 8, 8,115,131, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4,
+ 8,115,132,132,132,132,132,132,132,132,132,132,131, 8, 8, 8,
+ 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8,
+ 8, 8,128, 26, 8, 8,128, 61, 32, 11, 32, 34, 34, 34, 34, 11,
+ 32, 32, 34, 16, 16, 16, 40, 11, 32, 32,124, 61, 61,122, 34,133,
+ 43, 32, 16, 16, 50, 2, 90, 2, 36, 36, 36, 36, 36, 36, 36, 76,
+ 2, 2, 2, 2, 2, 2, 2, 56, 2,107,107, 2,111,112,107, 2,
+ 2, 2, 2, 6, 2, 98,107, 2,107, 4, 4, 4, 4, 2, 2, 80,
+ 2, 2, 2, 2, 2, 51, 2, 2, 98,134, 2, 2, 2, 2, 2, 2,
+ 61, 2,135,132,132,132,136, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 1, 2,137,138, 4, 4, 4, 4, 4, 61, 4, 4, 4, 4,139, 94,
+ 140, 95, 95, 95, 95, 43, 43, 78,141, 40, 40, 61, 95,142, 58, 61,
+ 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 64,143,144, 63,
+ 36, 36, 36, 36, 36, 58, 40, 63, 61, 27, 27, 61, 61, 61, 61, 61,
+ 27, 27, 27, 27, 27, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27, 27,
+ 145, 27, 27, 27, 27, 27, 27, 27, 36, 36, 76, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36,146, 2, 32, 32, 32, 32, 32, 32, 32, 64,
+ 48,147, 43, 43, 43, 43, 43, 80, 32, 32, 32, 32, 32, 32, 40, 43,
+ 36, 36, 36, 95, 95, 95, 95, 95, 43, 2, 2, 2, 2, 2, 2, 2,
+ 41, 41, 41,144, 40, 40, 40, 40, 41, 32, 32, 32, 32, 32, 32, 32,
+ 16, 32, 32, 32, 32, 32, 32, 32, 44, 16, 16, 16, 34, 34, 34, 32,
+ 32, 32, 32, 32, 42,148, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32,
+ 32, 32, 11, 11, 34, 34, 32, 16, 32, 16, 16, 32, 32, 32, 11, 11,
+ 11, 40,149, 35, 40, 35, 36, 36, 36, 65, 36, 65, 36, 64, 36, 36,
+ 36, 82, 79, 77, 61, 61, 43, 43, 27, 27, 27, 61,150, 61, 61, 61,
+ 36, 36, 2, 2, 2, 2, 2, 2, 78, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 78, 78, 78, 78, 78, 78, 78, 78, 43, 43, 43, 43, 43, 2,
+ 43, 36, 36, 36, 2, 66, 66, 64, 36, 36, 36, 43, 43, 43, 43, 2,
+ 36, 36, 36, 64, 43, 43, 43, 43, 43, 78, 78, 78, 78, 78, 78, 97,
+ 36, 64, 78, 43, 43, 78, 43, 78, 97, 2, 2, 2, 2, 2, 2, 80,
+ 7, 7, 7, 7, 7, 7, 7, 2, 36, 36, 64, 63, 36, 36, 36, 36,
+ 36, 36, 36, 36, 64, 43, 43, 77, 79, 77, 79, 43, 43, 43, 43, 43,
+ 36, 64, 36, 36, 36, 36, 77, 78, 7, 7, 7, 7, 7, 7, 2, 2,
+ 63, 36, 36, 71, 61, 82, 77, 36, 65, 43, 65, 64, 65, 36, 36, 43,
+ 36, 36, 36, 36, 36, 36, 76, 2, 36, 36, 36, 36, 36, 82, 43, 78,
+ 2, 76,151, 43, 43, 43, 43, 43, 16, 16, 16, 16, 16,103, 40, 40,
+ 16, 16, 16, 16,100, 41, 41, 41, 36, 82, 79, 78, 77, 97, 79, 43,
+ 152,152,152,152,152,152,152,152,153,153,153,153,153,153,153,153,
+ 16, 16, 16, 16, 16, 16, 35, 65, 36, 36, 36, 36,154, 36, 36, 36,
+ 36, 41, 41, 41, 41, 41, 41, 41, 41, 74, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36,132, 36, 36, 36, 36, 36, 36, 36, 71,
+ 36, 36, 36, 36, 36, 36,150, 61, 2, 2, 2,135,116, 2, 2, 2,
+ 6,155,156,132,132,132,132,132,132,132,116,135,116, 2,113,157,
+ 2, 2, 2, 2,139,132,132,116, 2,158, 8, 8, 60, 2, 2, 2,
+ 36, 36, 36, 36, 36, 36, 36,159, 2, 2, 3, 2, 4, 5, 6, 2,
+ 16, 16, 16, 16, 16, 17, 18,115,116, 4, 2, 36, 36, 36, 36, 36,
+ 63, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 40,
+ 20,160, 53, 20, 26, 8,128, 61, 61, 61, 61, 61,161, 59, 61, 61,
+ 2, 2, 2, 90, 27, 27, 27, 27, 27, 27, 27, 84, 61, 61, 61, 61,
+ 95, 95,127, 27, 84, 61, 61, 61, 61, 61, 61, 61, 61, 27, 61, 61,
+ 61, 61, 61, 61, 61, 61, 47, 43,162,162,162,162,162,162,162,162,
+ 163, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 87, 36,
+ 138, 36, 36, 36, 36, 95, 95, 95, 36, 36, 36, 36, 36, 36, 36, 58,
+ 164, 95, 95, 95, 95, 95, 95, 95, 11, 11, 11, 32, 16, 16, 16, 16,
+ 36, 36, 36, 58, 27, 27, 27, 27, 36, 36, 36, 71,145, 27, 27, 27,
+ 36, 36, 36,165, 27, 27, 27, 27, 36, 36, 36, 36, 36,165, 27, 27,
+ 36, 36, 36, 27, 27, 27, 27, 30, 36, 36, 36, 36, 36, 36, 27, 36,
+ 64, 43, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 43, 43, 43, 43,
+ 36, 36, 36, 36, 36, 36,165, 30, 36, 36, 36, 36, 36, 36,165, 27,
+ 36, 36, 36, 36, 72, 36, 36, 36, 36, 36, 64, 43, 43,163, 27, 27,
+ 36, 36, 36, 36, 58, 2, 2, 2, 36, 36, 36, 36, 27, 27, 27, 27,
+ 16, 16, 16, 16, 16, 27, 27, 27, 36, 36, 43, 43, 43, 43, 43, 43,
+ 7, 7, 7, 7, 7, 36, 36, 63, 11, 11, 11, 11,166, 43, 43,141,
+ 16, 16, 16, 16, 16, 16, 16, 8, 36, 36, 36, 36, 36, 64,167, 51,
+ 36, 36, 36, 36, 36, 36, 43, 43, 27, 27, 27, 87, 36, 36, 36, 36,
+ 163, 27, 30, 2, 2, 2, 2, 2, 36, 43, 43, 2, 2, 2, 2, 2,
+ 36, 36,165, 27, 27, 27, 27, 27, 79, 81, 36, 36, 36, 36, 36, 36,
+ 43, 43, 43, 57, 2, 2, 2, 2, 2, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 7, 7, 7, 7, 7, 65, 64, 65, 36, 36, 36, 36, 64,
+ 78, 79, 43, 77, 79, 57, 73, 2, 2, 43, 43, 43, 43, 43, 67, 59,
+ 36, 36, 36, 64, 43, 43, 79, 43, 43, 43, 43, 7, 7, 7, 7, 7,
+ 2, 2, 82, 81, 36, 36, 36, 36, 36, 64, 2, 36, 36, 36, 36, 36,
+ 36, 82, 78, 43, 43, 43, 43, 77, 81, 36, 58, 2, 56, 43, 57, 79,
+ 7, 7, 7, 7, 7, 58, 58, 2, 90, 27, 27, 27, 27, 27, 27, 27,
+ 36, 36, 36, 36, 36, 36, 78, 79, 43, 78, 77, 43, 2, 2, 2, 65,
+ 36, 36, 36, 36, 36, 36, 36, 64, 77, 78, 78, 78, 78, 78, 78, 78,
+ 36, 36, 36, 82, 78, 78, 81, 36, 36, 78, 78, 43, 43, 43, 43, 43,
+ 36, 36, 36, 36, 78, 79, 43, 43, 43, 78, 78, 78, 78, 78, 78, 77,
+ 65, 65, 2, 2, 2, 2, 2, 2, 56, 43, 43, 43, 43, 43, 43, 43,
+ 36, 36, 82, 78, 43, 43, 43, 43, 78, 43, 77, 65, 36, 58, 2, 2,
+ 7, 7, 7, 7, 7, 2, 2, 65, 78, 79, 43, 43, 77, 77, 78, 79,
+ 77, 43, 36, 66, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 82,
+ 78, 43, 43, 43, 78, 78, 43, 79, 57, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 36, 36, 43, 43, 78, 79, 43, 43, 43, 77, 79, 79,
+ 57, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 64, 79, 78,
+ 43, 43, 43, 79, 58, 2, 2, 2, 36, 36, 36, 36, 36, 36, 64, 79,
78, 43, 43, 79, 43, 43, 43, 43, 7, 7, 7, 7, 7, 27, 2, 89,
43, 43, 43, 43, 79, 57, 2, 2, 27, 27, 27, 27, 27, 27, 27, 87,
78, 78, 78, 78, 78, 79, 77, 65, 81, 79, 2, 2, 2, 2, 2, 2,
@@ -4721,39 +4938,41 @@ _hb_ucd_u8[13386] =
78, 78, 78, 78, 78, 78, 78, 78, 64, 43, 43, 43, 43, 65, 36, 36,
36, 64, 43, 43, 77, 64, 43, 57, 2, 2, 2, 56, 43, 43, 43, 43,
64, 43, 43, 77, 79, 43, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43,
- 43, 43, 43, 77, 43, 2, 66, 2, 43, 43, 43, 43, 43, 43, 43, 79,
- 58, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 36, 36, 36, 36, 36,
+ 43, 43, 43, 77, 43, 2, 66, 2, 58, 2, 2, 2, 2, 2, 2, 2,
+ 43, 43, 43, 43, 43, 43, 43, 79, 2, 36, 36, 36, 36, 36, 36, 36,
43, 43, 43, 43, 77, 43, 43, 43, 77, 43, 79, 43, 43, 43, 43, 43,
43, 43, 43, 64, 43, 43, 43, 43, 36, 36, 36, 36, 36, 78, 78, 78,
43, 77, 79, 79, 36, 36, 36, 36, 36, 64, 77, 97, 2, 2, 2, 2,
43, 82, 36, 36, 36, 36, 36, 36, 36, 36, 78, 43, 43, 43, 43, 78,
- 77, 57, 2, 2, 2, 2, 2, 2, 27, 27, 84, 61, 61, 61, 53, 20,
- 150, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 21,
- 65, 36, 36, 64, 43, 43, 43, 43, 43, 43, 57, 2, 2, 2, 2, 2,
- 43, 43, 43, 57, 2, 2, 61, 61, 40, 40, 89, 61, 61, 61, 61, 61,
- 7, 7, 7, 7, 7,167, 27, 27, 27, 87, 36, 36, 36, 36, 36, 36,
- 27, 27, 27, 30, 2, 2, 2, 2, 82, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 79, 43, 68, 40, 40, 40, 40, 40, 40,
- 40, 80, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 36, 47, 57,
- 61, 61,168, 79, 43, 61,168, 78, 78,169, 59, 59, 59, 76, 43, 43,
- 43, 70, 47, 43, 43, 43, 61, 61, 61, 61, 61, 61, 61, 43, 43, 61,
- 61, 43, 70, 61, 61, 61, 61, 61, 11, 11, 11, 11, 11, 16, 16, 16,
- 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16,
- 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11,
- 11, 11, 11, 16, 16, 16, 16, 16, 31, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11,
- 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33,
- 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31,
- 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16,
- 16, 33, 16, 16, 16, 32, 16, 7, 43, 43, 43, 70, 61, 47, 43, 43,
- 43, 43, 43, 43, 43, 43, 70, 61, 61, 61, 47, 61, 61, 61, 61, 61,
- 61, 61, 70, 21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56, 43, 43,
- 16, 16, 16, 16, 16, 39, 16, 16, 43, 43, 43, 68, 40, 40, 40, 40,
- 7, 7, 7, 7, 7, 7, 7, 71, 36, 36, 36, 36, 36, 36, 36, 43,
- 36, 36, 36, 36, 36, 36, 43, 43, 7, 7, 7, 7, 7, 7, 7,170,
- 36, 36, 36, 36, 36, 75, 43, 43, 16, 16, 43, 43, 43, 68, 40, 40,
- 27, 27, 27, 27, 27, 27,145, 27,171, 27, 27, 27, 27, 27, 27, 27,
+ 77, 57, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 43, 43, 43,
+ 27, 27, 84, 61, 61, 61, 53, 20,150, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 21, 65, 36, 36, 64, 43, 43, 43, 43,
+ 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43, 43, 43, 78, 79, 43,
+ 43, 43, 57, 2, 2, 2, 2, 2, 43, 43, 43, 57, 2, 2, 61, 61,
+ 40, 40, 89, 61, 61, 61, 61, 61, 7, 7, 7, 7, 7,168, 27, 27,
+ 27, 87, 36, 36, 36, 36, 36, 36, 40, 63, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 76,146, 2, 27, 27, 27, 30, 2, 2, 2, 2,
+ 82, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 79,
+ 43, 68, 40, 40, 40, 40, 40, 40, 40, 80, 43, 43, 43, 43, 43, 43,
+ 36, 36, 36, 36, 36, 36, 47, 57, 61, 61,169, 79, 43, 61,169, 78,
+ 78,170, 59, 59, 59, 75, 43, 43, 43, 70, 47, 43, 43, 43, 61, 61,
+ 61, 61, 61, 61, 61, 43, 43, 61, 61, 43, 70, 61, 61, 61, 61, 61,
+ 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 16, 11, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16,
+ 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16,
+ 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16,
+ 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16,
+ 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 16, 7,
+ 43, 43, 43, 70, 61, 47, 43, 43, 43, 43, 43, 43, 43, 43, 70, 61,
+ 61, 61, 47, 61, 61, 61, 61, 61, 61, 61, 70, 21, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 56, 43, 43, 16, 16, 16, 16, 16, 39, 16, 16,
+ 43, 43, 43, 68, 40, 40, 40, 40, 7, 7, 7, 7, 7, 7, 7, 71,
+ 7, 7, 7, 7, 7, 7, 7,171, 36, 36, 36, 36, 36, 76, 43, 43,
+ 172, 7, 7, 7, 7, 7, 7, 85, 16, 16, 43, 43, 43, 68, 40, 40,
+ 27, 27, 27, 27, 27, 27,145, 27,173, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27,145, 27, 27, 27, 27, 27, 27, 84, 61,
61, 61, 61, 61, 61, 25, 41, 41, 0, 0, 29, 21, 21, 21, 23, 21,
22, 18, 21, 25, 21, 17, 13, 13, 25, 25, 25, 21, 21, 9, 9, 9,
@@ -4764,8 +4983,8 @@ _hb_ucd_u8[13386] =
6, 5, 9, 21, 25, 9, 26, 12, 11, 11, 9, 6, 5, 21, 17, 17,
17, 26, 26, 23, 23, 12, 17, 12, 21, 12, 12, 21, 7, 21, 1, 1,
21, 23, 26, 26, 1, 21, 6, 7, 7, 12, 12, 7, 21, 7, 12, 1,
- 12, 6, 6, 12, 12, 26, 7, 26, 26, 7, 21, 1, 24, 7, 7, 6,
- 1, 12, 12, 10, 10, 10, 10, 12, 21, 6, 10, 7, 7, 10, 23, 7,
+ 12, 6, 6, 12, 12, 26, 7, 26, 26, 7, 21, 1, 24, 7, 1, 12,
+ 7, 6, 12, 10, 10, 10, 10, 12, 21, 6, 10, 7, 7, 10, 23, 7,
15, 26, 13, 21, 13, 7, 15, 7, 12, 23, 21, 26, 21, 15, 17, 7,
29, 7, 7, 22, 18, 18, 14, 14, 14, 7, 10, 21, 17, 21, 11, 12,
5, 6, 8, 8, 8, 24, 5, 24, 9, 24, 29, 29, 29, 1, 20, 19,
@@ -4776,247 +4995,250 @@ _hb_ucd_u8[13386] =
26, 14, 17, 6, 14, 6, 12, 24, 24, 6, 26, 15, 6, 21, 11, 21,
24, 9, 6, 9, 23, 26, 6, 10, 4, 4, 3, 3, 7, 25, 17, 16,
16, 22, 16, 16, 25, 17, 7, 1, 25, 24, 26, 1, 2, 2, 12, 15,
- 21, 14, 7, 15, 12, 17, 13, 15, 26, 10, 10, 1, 13, 23, 23, 15,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 0,
- 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 21, 14, 7, 15, 9, 12, 12, 17, 13, 15, 26, 10, 10, 1, 13, 23,
+ 7, 13, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10,
+ 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 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, 0, 0, 0, 17, 18, 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, 17, 18, 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, 20, 0, 21,
- 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 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, 36, 0, 37, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, 0, 0,
- 40, 41, 42, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 5, 6, 7,
- 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, 16, 18, 16, 19,
- 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, 21, 19, 0, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 35, 0, 0,
- 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0,
- 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0,
- 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0, 0, 55,
- 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 62, 63, 0, 0,
- 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0,
- 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0,
- 0, 0, 74, 0, 0, 0, 0, 0, 75, 76, 0, 77, 78, 0, 0, 79,
- 80, 0, 81, 62, 0, 82, 83, 0, 0, 84, 85, 86, 0, 0, 0, 87,
- 0, 88, 0, 0, 51, 89, 51, 0, 90, 0, 91, 0, 0, 0, 80, 0,
- 0, 0, 92, 93, 0, 94, 95, 96, 97, 0, 0, 0, 0, 0, 51, 0,
- 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0,
- 0,101,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 0, 0,
- 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,106, 0, 0,107,
- 0, 0, 0, 0, 0, 0,108, 0,109, 0,102, 0, 0, 0, 0, 0,
- 110,111, 0, 0, 0, 0, 0, 0, 0,112, 0, 0, 0, 0, 0, 0,
- 0,113, 0,114, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6,
- 7, 0, 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13,
- 0, 0, 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0,
- 0, 0, 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27,
- 0, 0, 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0,
- 0, 35, 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0,
- 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0,
- 0, 0, 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0,
- 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51,
- 0, 52, 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56,
- 0, 0, 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0,
- 0, 61, 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, 0, 0,
- 0, 67, 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, 0, 0,
- 77, 78, 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, 0, 81,
- 0, 0, 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, 84, 0,
- 85, 0, 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, 0, 0,
- 0, 88, 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, 0, 0,
- 33, 0, 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, 0, 0,
- 93, 0, 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, 0, 0,
- 98, 0, 0, 0, 99, 0, 0, 0, 0,100,101, 93, 0, 0,102, 0,
- 0, 0, 84, 0, 0,103, 0, 0, 0,104,105, 0, 0,106,107, 0,
- 0, 0, 0, 0, 0,108, 0, 0,109, 0, 0, 0, 0,110, 33, 0,
- 111,112,113, 35, 0, 0,114, 0, 0, 0,115, 0, 0, 0, 0, 0,
- 0,116, 0, 0,117, 0, 0, 0, 0,118, 88, 0, 0, 0, 0, 0,
- 57, 0, 0, 0, 0, 52,119, 0, 0, 0, 0,120, 0, 0,121, 0,
- 0, 0, 0,119, 0, 0,122, 0, 0, 0, 0, 0, 0,123, 0, 0,
- 0,124, 0, 0, 0,125, 0,126, 0, 0, 0, 0,127,128,129, 0,
- 130, 0,131, 0, 0, 0,132,133,134, 0, 77, 0, 0, 0, 0, 0,
- 35, 0, 0, 0,135, 0, 0, 0,136, 0, 0,137, 0, 0,138, 0,
- 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6,
- 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1,
- 1, 1, 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26,
- 27, 28, 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35,
- 1, 36, 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0,
- 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0,
- 0, 47, 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 0,
- 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21,
- 35, 1, 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0,
- 0, 59, 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0,
- 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0,
- 68, 0, 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77,
- 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80,
- 0, 0, 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0,
- 83, 0, 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52,
- 15, 86, 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, 1, 0,
- 0, 0, 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, 0, 78,
- 0, 0, 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, 21, 1,
- 21, 92, 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, 81, 99,
- 100, 4, 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, 0, 0,
- 0, 61, 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50, 0, 0,
- 0, 38, 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68, 61, 0,
- 0, 0, 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0, 0, 0,
- 0,107, 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, 0, 0,
- 0,108, 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0,
+ 0, 0, 0, 0, 41, 42, 43, 0, 44, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0,
+ 4, 5, 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17,
+ 16, 18, 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, 21, 19,
+ 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0,
+ 0, 35, 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0,
+ 0, 0, 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, 0, 0,
+ 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61,
+ 62, 63, 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, 67, 0,
+ 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 69, 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, 0, 0,
+ 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, 0, 0, 76, 77, 0, 78,
+ 79, 0, 0, 80, 81, 0, 82, 62, 0, 83, 84, 0, 0, 85, 86, 87,
+ 0, 88, 0, 89, 0, 90, 0, 0, 51, 91, 51, 0, 92, 0, 93, 0,
+ 0, 0, 81, 0, 0, 0, 94, 95, 0, 96, 97, 98, 99, 0, 0, 0,
+ 0, 0, 51, 0, 0, 0, 0,100,101, 0, 0, 0, 0, 0, 0,102,
+ 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 0,104,105, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0,107, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,108,109, 0, 0,110, 0, 0, 0, 0,
+ 0, 0,111, 0,112, 0,105, 0, 0, 0, 0, 0,113,114, 0, 0,
+ 0, 0, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117, 0,118,
+ 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 8, 0,
+ 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, 0, 0, 14, 15,
+ 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 0, 0,
+ 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, 0, 0, 28, 29,
+ 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, 0, 35, 33, 0,
+ 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0,
+ 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 43,
+ 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0,
+ 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 52, 0, 53,
+ 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0, 0, 0,
+ 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 61, 52, 0,
+ 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, 0, 0, 0, 67, 0, 68,
+ 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, 0, 0, 77, 78, 0, 0,
+ 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, 0, 81, 0, 0, 0, 0,
+ 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, 84, 0, 85, 0, 52, 0,
+ 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, 0, 0, 0, 88, 57, 0,
+ 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, 0, 0, 33, 0, 0, 91,
+ 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, 0, 0, 93, 0, 0, 0,
+ 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0,
+ 99, 0, 0, 0,100, 0, 0, 0, 0,101,102, 93, 0, 0,103, 0,
+ 0, 0, 84, 0, 0,104, 0, 0, 0,105,106, 0, 0,107,108, 0,
+ 0, 0, 0, 0, 0,109, 0, 0,110, 0, 0, 0, 0,111, 33, 0,
+ 112,113,114, 57, 0, 0,115, 35, 0, 0,116, 0, 0, 0,117, 0,
+ 0, 0, 0, 0, 0,118, 0, 0,119, 0, 0, 0, 0,120, 88, 0,
+ 0, 0, 0, 0, 57, 0, 0, 0, 0, 52,121, 0, 0, 0, 0,122,
+ 0, 0,123, 0, 0, 0, 0,121, 0, 0,124, 0, 0, 0, 0, 0,
+ 79, 0, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,127, 0,128,
+ 0, 0, 0, 0,129,130,131, 0,132, 0,133, 0, 0, 0,134,135,
+ 136, 0, 77, 0, 0, 0, 0, 0, 35, 0, 0, 0,137, 0, 0, 0,
+ 138, 0, 0, 0,139, 0, 0,140, 0, 0,141, 0, 0, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 4, 4, 8,
+ 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1, 1, 1, 19, 1,
+ 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26, 27, 28, 29, 30,
+ 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, 1, 36, 37, 0,
+ 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0, 0, 0, 43, 36,
+ 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0, 0, 47, 0, 38,
+ 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 19, 52, 1, 0, 0,
+ 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21, 35, 1, 0, 0,
+ 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, 0, 59, 0, 60,
+ 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0,
+ 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 69,
+ 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77, 0, 0, 0, 78,
+ 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80, 0, 0, 0, 62,
+ 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, 83, 0, 0, 19,
+ 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52, 15, 86, 36, 10,
+ 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, 1, 0, 0, 0, 0, 0,
+ 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, 0, 78, 0, 0, 87, 9,
+ 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, 21, 1, 21, 92, 93, 1,
+ 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, 81, 99,100, 4, 58, 0,
+ 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, 0, 0, 0, 61, 0, 0,
+ 101,102, 0, 0,103, 0, 0, 1, 1, 50, 0, 0, 0, 38, 0, 63,
+ 0, 0, 0, 0, 0, 62, 0, 0,104, 68, 61, 0, 0, 0, 78, 0,
+ 0, 0,105,106, 58, 38, 81, 0, 0, 0, 0, 0, 0,107, 1, 14,
+ 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, 0, 0, 0,108, 0, 0,
+ 109, 61, 0,110, 0, 0, 0, 1, 0, 0, 0, 0, 49, 50, 0, 0,
19, 58, 0, 0, 0, 51, 0,111, 14, 52,112, 41, 0, 0, 62, 0,
0, 61, 0, 0,113, 0, 87, 0, 0, 0, 61, 62, 0, 0, 62, 0,
89, 0, 0,113, 0, 0, 0, 0,114, 0, 0, 0, 78, 55, 0, 38,
- 1, 58, 1, 58, 0, 0, 63, 89, 0, 0,115, 0, 0, 0, 55, 0,
- 0, 0, 0,115, 0, 0, 0, 0, 61, 0, 0, 0, 0, 79, 0, 61,
- 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, 0, 0, 8, 91,
- 0, 0, 1, 87, 0, 0,116, 0, 0, 0, 0, 0, 0,117, 0,118,
- 119,120,121, 0,104, 4,122, 49, 23, 0, 0, 0, 38, 50, 38, 58,
- 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, 48,105, 87, 0, 0, 0,
- 0, 1, 0, 0, 0,123, 4,122, 0, 0, 0, 1,124, 0, 0, 0,
- 0, 0,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, 1, 1,
- 1, 1, 1,220,220,220,220,230,230,230,230,240,230,220,220,220,
- 230,230,230,220,220, 0,230,230,230,220,220,220,220,230,232,220,
- 220,230,233,234,234,233,234,234,233,230, 0, 0, 0,230, 0,220,
- 230,230,230,230,220,230,230,230,222,220,230,230,220,220,230,222,
- 228,230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22,
- 0, 23, 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, 0, 0, 0,
- 0, 27, 28, 29, 30, 31, 32, 33, 34,230,230,220,220,230,220,230,
- 230,220, 35, 0, 0, 0, 0, 0,230,230,230, 0, 0,230,230, 0,
- 220,230,230,220, 0, 0, 0, 36, 0, 0,230,220,230,230,220,220,
- 230,220,220,230,220,230,220,230,230, 0, 0,220, 0, 0,230,230,
- 0,230, 0,230,230,230,230,230, 0, 0, 0,220,220,220,230,220,
- 220,220,230,230, 0,220, 27, 28, 29,230, 7, 0, 0, 0, 0, 9,
- 0, 0, 0,230,220,230,230, 0, 0, 0, 0, 0,230, 0, 0, 84,
- 91, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 9, 0,103,103,
- 9, 0,107,107,107,107,118,118, 9, 0,122,122,122,122,220,220,
- 0, 0, 0,220, 0,220, 0,216, 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,220, 0, 0, 0, 0, 7, 0, 9, 9, 0, 9, 9,
- 0, 0, 0,230, 0, 0, 0,228, 0, 0, 0,222,230,220,220, 0,
- 0, 0,230, 0, 0,220,230,220, 0,220,230,230,230, 0, 0, 0,
- 9, 9, 0, 0, 7, 0,230, 0, 1, 1, 1, 0, 0, 0,230,234,
- 214,220,202,230,230,230,230,230,232,228,228,220,218,230,233,220,
- 230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230,220,230,
- 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0, 0, 0,
- 0,220,230, 0,230,230,220, 0, 0,230, 0, 0, 26, 0, 0,220,
- 0,230,230, 1,220, 0, 0,230,220, 0, 0, 0,220,220, 0, 0,
- 230,220, 0, 9, 7, 0, 0, 7, 9, 0, 0, 0, 9, 7, 6, 6,
- 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, 1, 0, 0, 0,226,
- 216,216,216,216,216, 0,220,220,220, 0,232,232,220,230,230,230,
- 7, 0, 16, 17, 17, 33, 17, 49, 17, 17, 84, 97,135,145, 26, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 1, 58, 1, 58, 0, 0, 0, 0, 0, 88, 63, 89, 0, 0,115, 0,
+ 0, 0, 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0, 0, 0,
+ 0, 79, 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0,
+ 0, 0, 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0, 0, 0,
+ 0,117, 0,118,119,120,121, 0,104, 4,122, 49, 23, 0, 0, 0,
+ 38, 50, 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, 48,105,
+ 87, 0, 0, 0, 0, 1, 0, 0, 0,123, 0, 0, 0,112, 4,122,
+ 0, 0, 0, 1,124, 0, 0, 0, 0, 0,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, 1, 1, 1, 1, 1,220,220,220,220,230,
+ 230,230,230,240,230,220,220,220,230,230,230,220,220, 0,230,230,
+ 230,220,220,220,220,230,232,220,220,230,233,234,234,233,234,234,
+ 233,230, 0, 0, 0,230, 0,220,230,230,230,230,220,230,230,230,
+ 222,220,230,230,220,220,230,222,228,230, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, 25, 0,230,220,
+ 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
+ 34,230,230,220,220,230,220,230,230,220, 35, 0, 0, 0, 0, 0,
+ 230,230,230, 0, 0,230,230, 0,220,230,230,220, 0, 0, 0, 36,
+ 0, 0,230,220,230,230,220,220,230,220,220,230,220,230,220,230,
+ 230, 0, 0,220, 0, 0,230,230, 0,230, 0,230,230,230,230,230,
+ 0, 0, 0,220,220,220,230,220,220,220,230,230, 0,220, 27, 28,
+ 29,230, 7, 0, 0, 0, 0, 9, 0, 0, 0,230,220,230,230, 0,
+ 0, 0, 0, 0,230, 0, 0, 84, 91, 0, 0, 0, 0, 9, 9, 0,
+ 0, 0, 0, 0, 9, 0,103,103, 9, 0,107,107,107,107,118,118,
+ 9, 0,122,122,122,122,220,220, 0, 0, 0,220, 0,220, 0,216,
+ 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,220, 0, 0, 0,
+ 0, 7, 0, 9, 9, 0, 9, 9, 0, 0, 0,230, 0, 0, 0,228,
+ 0, 0, 0,222,230,220,220, 0, 0, 0,230, 0, 0,220,230,220,
+ 0,220,230,230,230, 0, 0, 0, 9, 9, 0, 0, 7, 0,230, 0,
+ 1, 1, 1, 0, 0, 0,230,234,214,220,202,230,230,230,230,230,
+ 232,228,228,220,218,230,233,220,230,220,230,230, 1, 1, 1, 1,
+ 1,230, 0, 1, 1,230,220,230, 1, 1, 0, 0,218,228,232,222,
+ 224,224, 0, 8, 8, 0, 0, 0, 0,220,230, 0,230,230,220, 0,
+ 0,230, 0, 0, 26, 0, 0,220, 0,230,230, 1,220, 0, 0,230,
+ 220, 0, 0, 0,220,220, 0, 0,230,220, 0, 9, 7, 0, 0, 7,
+ 9, 0, 0, 0, 9, 7, 6, 6, 0, 0, 0, 0, 1, 0, 0,216,
+ 216, 1, 1, 1, 0, 0, 0,226,216,216,216,216,216, 0,220,220,
+ 220, 0,232,232,220,230,230,230, 7, 0, 16, 17, 17, 33, 17, 49,
+ 17, 17, 84, 97,135,145, 26, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17,177, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 5, 3, 3, 3,
- 3, 3, 6, 7, 8, 3, 3, 3, 3, 3, 9, 10, 11, 12, 13, 3,
- 3, 3, 3, 3, 3, 3, 3, 14, 3, 15, 3, 3, 3, 3, 3, 3,
- 16, 17, 18, 19, 20, 21, 3, 3, 3, 22, 23, 24, 3, 3, 3, 3,
- 3, 3, 25, 3, 3, 3, 3, 3, 3, 3, 3, 26, 3, 3, 27, 28,
- 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0,
- 0, 3, 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0,
- 0, 9, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 0,
- 0, 14, 15, 16, 6, 0, 17, 18, 19, 19, 19, 20, 21, 22, 23, 24,
- 19, 25, 0, 26, 27, 19, 19, 28, 29, 30, 0, 31, 0, 0, 0, 8,
- 0, 0, 0, 0, 0, 0, 0, 19, 28, 0, 32, 33, 9, 34, 35, 19,
- 0, 0, 36, 37, 38, 39, 40, 19, 0, 41, 42, 43, 44, 31, 0, 1,
- 45, 42, 0, 0, 0, 0, 0, 32, 14, 14, 0, 0, 0, 0, 14, 0,
- 0, 46, 47, 47, 47, 47, 48, 49, 47, 47, 47, 47, 50, 51, 52, 53,
- 43, 21, 0, 0, 0, 0, 0, 0, 0, 54, 6, 55, 0, 14, 19, 1,
- 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 19, 58, 31, 0, 0,
- 0, 0, 0, 0, 0, 59, 14, 0, 0, 0, 0, 1, 0, 2, 0, 0,
- 0, 3, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 2, 3, 0, 4, 5, 0, 0, 6, 0, 0, 0, 7,
- 0, 0, 0, 1, 1, 0, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0,
- 8, 9, 10, 11, 12, 0, 0, 0, 13, 0, 0, 0, 0, 14, 15, 16,
- 17, 0, 0, 0, 1, 0, 0, 18, 19, 0, 0, 0, 20, 0, 0, 0,
- 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 8, 21, 9,
- 0, 0, 22, 0, 0, 0, 0, 1, 0, 23, 24, 25, 0, 0, 26, 0,
- 0, 0, 8, 21, 27, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 28,
- 29, 30, 0, 31, 32, 20, 1, 1, 0, 0, 0, 8, 21, 9, 1, 4,
- 5, 0, 0, 0, 33, 9, 0, 1, 1, 1, 0, 8, 21, 21, 21, 21,
- 34, 1, 35, 21, 21, 21, 9, 36, 0, 0, 37, 38, 1, 0, 39, 0,
- 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 21, 9, 1, 0, 0, 0,
- 40, 0, 8, 21, 21, 21, 21, 21, 21, 21, 21, 9, 0, 1, 1, 1,
- 1, 8, 21, 21, 21, 9, 0, 0, 0, 41, 0, 42, 43, 0, 0, 0,
- 1, 44, 0, 0, 0, 45, 8, 9, 1, 0, 0, 0, 8, 21, 21, 21,
- 9, 0, 1, 0, 1, 1, 8, 21, 21, 9, 0, 4, 5, 8, 9, 1,
- 0, 0, 0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 3, 3, 3, 3, 3, 3, 3, 15, 3, 16, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17,177, 0, 1, 2, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3,
+ 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 6, 7, 8, 3, 3, 3,
+ 3, 3, 9, 10, 11, 12, 13, 3, 3, 3, 3, 3, 3, 3, 3, 14,
+ 3, 15, 3, 3, 3, 3, 3, 3, 16, 17, 18, 19, 20, 21, 3, 3,
+ 3, 22, 23, 24, 3, 3, 3, 3, 3, 3, 25, 3, 3, 3, 3, 3,
+ 3, 3, 3, 26, 3, 3, 27, 28, 0, 1, 0, 0, 0, 0, 0, 1,
+ 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 9, 0, 0, 0, 0, 0, 0, 9, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 10, 11, 12, 13, 0, 0, 14, 15, 16, 6, 0, 17, 18,
+ 19, 19, 19, 20, 21, 22, 23, 24, 19, 25, 0, 26, 27, 19, 19, 28,
+ 29, 30, 0, 31, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 19,
+ 28, 0, 32, 33, 9, 34, 35, 19, 0, 0, 36, 37, 38, 39, 40, 19,
+ 0, 41, 42, 43, 44, 31, 0, 1, 45, 42, 0, 0, 0, 0, 0, 32,
+ 14, 14, 0, 0, 0, 0, 14, 0, 0, 46, 47, 47, 47, 47, 48, 49,
+ 47, 47, 47, 47, 50, 51, 52, 53, 43, 21, 0, 0, 0, 0, 0, 0,
+ 0, 54, 6, 55, 0, 14, 19, 1, 0, 0, 0, 0, 56, 57, 0, 0,
+ 0, 0, 0, 19, 58, 31, 0, 0, 0, 0, 0, 0, 0, 59, 14, 0,
+ 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 60, 61, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 4,
+ 5, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 1, 1, 0, 0, 8,
+ 9, 0, 8, 9, 0, 0, 0, 0, 8, 9, 10, 11, 12, 0, 0, 0,
+ 13, 0, 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, 1, 0, 0, 18,
+ 19, 0, 0, 0, 20, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1,
+ 1, 1, 1, 1, 0, 8, 21, 9, 0, 0, 22, 0, 0, 0, 0, 1,
+ 0, 23, 24, 25, 0, 0, 26, 0, 0, 0, 8, 21, 27, 0, 1, 0,
+ 0, 1, 1, 1, 1, 0, 1, 28, 29, 30, 0, 31, 32, 20, 1, 1,
+ 0, 0, 0, 8, 21, 9, 1, 4, 5, 0, 0, 0, 33, 9, 0, 1,
+ 1, 1, 0, 8, 21, 21, 21, 21, 34, 1, 35, 21, 21, 21, 9, 36,
+ 0, 0, 37, 38, 1, 0, 39, 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 8, 21, 9, 1, 0, 0, 0, 40, 0, 8, 21, 21, 21, 21, 21,
+ 21, 21, 21, 9, 0, 1, 1, 1, 1, 8, 21, 21, 21, 9, 0, 0,
+ 0, 41, 0, 42, 43, 0, 0, 0, 1, 44, 0, 0, 0, 45, 8, 9,
+ 1, 0, 0, 0, 8, 21, 21, 21, 9, 0, 1, 0, 1, 1, 8, 21,
+ 21, 9, 0, 4, 5, 8, 9, 1, 0, 0, 0, 1, 2, 3, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3, 3, 3, 3, 3, 3,
+ 3, 15, 3, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 18, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 17, 17, 18, 17, 19, 20, 21, 22, 23, 23,
- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 25, 25, 26, 27, 28, 29, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 52, 53, 31, 31, 31, 31, 54, 55, 55, 56, 31,
- 31, 31, 31, 31, 31, 31, 57, 58, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 59, 60, 31, 61, 62, 62, 62, 62,
- 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 64, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 65, 66, 67, 31, 31,
- 31, 31, 68, 31, 31, 31, 31, 31, 31, 31, 31, 69, 70, 71, 17, 17,
- 72, 73, 31, 74, 75, 76, 77, 78, 79, 31, 80, 81, 17, 82, 17, 17,
- 17, 17, 31, 31, 23, 23, 23, 23, 23, 23, 23, 83, 31, 31, 31, 31,
- 23, 83, 31, 31, 23, 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 0, 0, 1, 2, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17,
+ 18, 17, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 25, 26, 27,
+ 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 52, 53, 31,
+ 31, 31, 31, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 57,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 58, 31, 31, 31,
+ 59, 60, 61, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 64, 65, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 66, 67, 68, 31, 31, 31, 31, 69, 31, 31, 31, 31, 31,
+ 31, 31, 17, 70, 71, 72, 17, 17, 73, 74, 31, 75, 76, 77, 78, 79,
+ 80, 31, 81, 82, 17, 83, 17, 17, 17, 17, 31, 31, 23, 23, 23, 23,
+ 23, 23, 23, 84, 31, 31, 31, 31, 23, 84, 31, 31, 23, 23, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 84, 0, 0, 1, 0, 1, 2, 3, 0, 1, 2, 3,
- 4, 5, 6, 7, 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6,
- 7, 8, 9, 10, 11, 11, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 19, 27, 28, 29, 30, 30, 31, 31, 32, 32,
- 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 40, 41, 41,
- 42, 42, 42, 43, 44, 44, 45, 46, 47, 47, 47, 47, 48, 48, 48, 48,
- 48, 48, 49, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 53,
- 54, 55, 56, 56, 57, 58, 59, 51, 60, 61, 62, 63, 64, 65, 66, 7,
- 67, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 7, 4, 4, 4, 4,
- 77, 77, 77, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 85, 85, 85, 85, 0, 0, 0, 0, 86, 87, 88, 88,
- 89, 90, 48, 91, 0, 0, 92, 92, 92, 92, 92, 93, 94, 95, 96, 97,
- 98, 47, 99,100,101,102, 0,103,104,105, 0, 0, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 0,106,106,106,106,
- 106,106,106,106,106,106,106,107,108,108,108,108,108, 11,109,110,
- 111, 4,112, 4,113,114,115,116,117,118,119,120,121,122,123,124,
- 125,126, 50,127, 47, 47, 47, 47, 47, 47, 47, 47,128,128,128,128,
- 128,128,128,128,128,128,128,128, 92, 92, 92, 92, 92, 92, 92, 92,
- 129,130, 19, 19, 19, 19, 19, 19,131, 19, 19, 19,132,133, 19,134,
- 135,136,137,101,138,138,138,138, 0, 77,139,140,128,128,141,142,
- 143,144,145,146,147,148,149,150,151,152,153,153,154,154,154,154,
- 154,154, 4, 4,155,156,157,158,159,160,161,162,163,164,165,166,
- 167,168,169,169,170,170,171,171,172,172,128,128, 19, 19,173,174,
- 175,176,177,178,179,179,180,181,182,183,184,185,186,186,187,188,
- 189,190,128,128,191,191,192,192,128,128,193,193,194,195,196,196,
- 197,197,128,128,198,198,199,199,200,200,201,201,202,203,204,205,
- 28, 28,128,128,206,207,208,208,209,210,211,211,128,128,212,212,
- 213,213,214, 34,215,215,215,215,215,215,215,215,215,215,215,215,
- 215,215,128,128,128,128,128,128,128,128,216,216,217,217,217,217,
- 217,217,217,217,217,217,128,128,128,128,128,128,218,218,218,218,
- 218,218,218,218,218,218,128,128,128,128,128,128,110,110,110,110,
- 110,110,110,110,110,219,220,221,222,222,222,222,223,223,223,223,
- 224,224,224,225,226,226,226,226,226,226,226,226,226,226,226,226,
- 227,227,227,227,227,227,227,227,226,226,128,128,128,128,128,128,
- 128,128,104,104,228,229,229,229,230,231,232,232,232,232,232,232,
- 128,128,128,128,233,233,234, 0,128,128,128,128,128,128,128,128,
- 7,235, 0, 0, 0, 0, 0, 0, 0,236,237, 0, 77, 77, 0, 0,
- 0, 0,128,128,238,238,238,238,238,238,238,238,238,238,238,238,
- 128,128,128,128,128,128,128,128, 4, 4,128,128,239, 11, 11, 11,
- 240,240,128,128,128,128,241,242,128,128,128,128,128,128,243,243,
- 128,128,128,128,128,128,128,128,128,128, 48, 48,244,244,244,244,
- 245,245,128,128, 0, 0, 0, 0, 0, 0,128,128, 19, 19, 19, 19,
- 128,128,128,128,246, 0,128,128, 0, 0, 0, 0, 92, 92,128,128,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 85, 0, 0, 1,
+ 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3,
+ 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 11,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 19, 27,
+ 28, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36,
+ 37, 37, 38, 38, 39, 40, 41, 41, 42, 42, 42, 43, 44, 44, 45, 46,
+ 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 49, 50, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 52, 53, 54, 55, 56, 56, 57, 58, 59, 51,
+ 60, 61, 62, 63, 64, 65, 66, 7, 67, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 7, 4, 4, 4, 4, 77, 77, 77, 77, 78, 79, 80, 81,
+ 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 85, 85,
+ 0, 0, 0, 0, 86, 87, 88, 88, 89, 90, 48, 91, 0, 0, 92, 92,
+ 92, 92, 92, 93, 94, 95, 96, 97, 98, 47, 99,100,101,102, 0,103,
+ 104,105, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 0,106,106,106,106,106,106,106,106,106,106,106,107,
+ 108,108,108,108,108, 11,109,110,111, 4,112, 4,113,114,115,116,
+ 117,118,119,120,121,122,123,124,125,126, 50,127, 47, 47, 47, 47,
+ 47, 47, 47, 47,128,128,128,128,128,128,128,128,128,128,128,128,
+ 92, 92, 92, 92, 92, 92, 92, 92,129,130, 19, 19, 19, 19, 19, 19,
+ 131, 19, 19, 19,132,133, 19,134,135,136,137,101,138,138,138,138,
+ 0, 77,139,140,128,128,141,142,143,144,145,146,147,148,149,150,
+ 151,152,153,154,155,155,155,155,155,155, 4, 4,156,157,158,159,
+ 160,161,162,163,164,165,166,167,168,169,170,170,171,171,172,172,
+ 173,174,174,174, 19, 19,175,176,177,178,179,180,181,181,182,183,
+ 184,185,186,187,188,188,189,190,191,192,193,193,194,194,195,195,
+ 128,128,196,196,197,198,199,200,201,201,128,128,202,202,203,203,
+ 204,204,205,205,206,207,208,209, 28, 28,210,210,211,212,213,213,
+ 214,215,216,216,128,128,217,217,218,218,219, 34,220,220,220,220,
+ 220,220,220,220,220,220,220,220,220,220,128,128,128,128,128,128,
+ 128,128,221,221,222,222,222,222,222,222,222,222,223,223,223,223,
+ 223,223,223,223,223,223,128,128,128,128,128,128,128,128,128,128,
+ 224,224,128,128,110,110,110,110,110,110,110,110,110,225,226,227,
+ 228,228,228,228,128,128,128,128,229,229,128,128,230,230,230,230,
+ 231,231,231,232,233,233,233,233,233,233,233,233,233,233,233,233,
+ 234,234,234,234,234,234,234,234,233,233,128,128,128,128,128,128,
+ 128,128,104,104,235,236,236,236,237,238,239,239,239,239,239,239,
+ 128,128,128,128,240,240,241, 0,128,128,128,128, 0, 0, 0, 0,
+ 7,242, 0, 0, 0, 0, 0, 0, 0,243,244, 0, 77, 77, 0, 0,
+ 0, 0,128,128,245,245,245,245,245,245,245,245,245,245,245,245,
+ 128,128,128,128,128,128,128,128, 4, 4,128,128,246, 11, 11, 11,
+ 247,247,128,128,128,128,248,249,128,128,128,128,128,128,250,250,
+ 128,128,251,251,128,128,128,128,128,128, 48, 48,252,252,252,252,
+ 253,253,128,128, 0, 0, 0, 0, 0, 0,128,128, 19, 19, 19, 19,
+ 128,128,128,128,254, 0,128,128, 0, 0, 0, 0, 92, 92,128,128,
128,128,128,128, 0, 0,128,128, 7, 7, 7, 7, 0, 0, 0, 0,
1, 2, 1, 2, 0, 0, 3, 3, 4, 5, 4, 5, 4, 4, 4, 4,
4, 4, 4, 6, 0, 0, 7, 0, 8, 8, 8, 8, 8, 8, 8, 9,
@@ -5056,30 +5278,32 @@ _hb_ucd_u8[13386] =
137,137,138,138,138,138,139, 0,140,140,140,141,141,142,142,142,
143,143,144,144,144,144,144,144,145,145,145,145,145,146,146,146,
147,147,147,148,148,148,148,148,149,149,149,150,150,150,150,151,
- 151,151,151,151,152,152,152,152,153,153,153,153,154,154,155,155,
- 156,156,156,156,156,156,157,157,158,158,159,159,159,159,159,159,
- 160,160,161,161,161,161,161,161,162,162,162,162,162,162,163,163,
- 164,164,164,164,165,165,165,165,166,166,166,166,167,167,168,168,
- 169,169,169,169,170,170,170,170,171,171,171,171,172,172,172,172,
- 173,173,173,173,173,173,173,174,175,175,175,176,176,176,176,177,
- 177,177,177,178,178,178,179,179,180,180,180,180,181,181,181,181,
- 181,182,182,182,183,183,183,183,183,184,184,184,185,185,185,185,
- 185,185,186, 43,187,187,187,187,188,188,188,189,189,189,189,189,
- 190,190,190,191,190,190,190,190,192,192,192,192,193,193,193,193,
- 194,194,194,194,195,195,195,195,195,195, 66, 66,196,196,196,196,
- 197,197,197,197,198,198,198,198,199,199,199,199,200,200,200,200,
- 201,201,201,201,202,202,202,202,202,203,203,203,203,203,203, 55,
- 204,204,204,204,205,205,205,205,205,205,205,206,206,206,206,206,
- 207,207,207,207,207,207,208,208,208,208,208,208,209,209,209,209,
- 210,210,210,210,110,110,110,110,211,211,211,211,212,212,212,212,
- 213,213,213,213,214,214,214,214,215,215,215,216,216,216,216,216,
- 216,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,
- 220,220,221, 94,222,222,222,222,223,223,223,223,224, 99, 99, 99,
- 99, 99, 99, 99, 99, 99,102,225, 99,226,102,227,227,227,227,227,
- 228,228,228,228,228,228, 0, 0, 8, 0, 0, 0, 0, 0,229,230,
- 231, 0,232, 0,233,233,233,233, 91, 91, 91, 13,234,234,234,234,
- 235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,
- 239,239,239,239,240, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2,
+ 151,151,151,151,152,152,152,152,153,153,153,153,154,154,154,154,
+ 155,155,156,156,157,157,157,157,157,157,158,158,159,159,160,160,
+ 160,160,160,160,161,161,162,162,162,162,162,162,163,163,163,163,
+ 163,163,164,164,165,165,165,165,166,166,166,166,167,167,167,167,
+ 168,168,169,169,170,170,170,170,171,171,171,171,172,172,172,172,
+ 173,173,173,173,174,174,174,174,175,175,175,175,176, 21, 21, 21,
+ 177,177,177,178,178,178,178,179,179,179,179,180,180,180,181,181,
+ 182,182,182,182,183,183,183,183,183,184,184,184,185,185,185,185,
+ 185,186,186,186,187,187,187,187,187,187,188, 43,189,189,189,189,
+ 190,190,190,191,191,191,191,191,192,192,192,193,192,192,192,192,
+ 194,194,194,194,195,195,195,195,196,196,196,196,197,197,197,197,
+ 198,198,198,198,198,198, 66, 66,199,199,199,199,199, 49, 49, 49,
+ 200,200,200,200,201,201,201,201,202,202,202,202,203,203,203,203,
+ 204,204,204,204,205,205,205,205,205,206,206,206,206,206,206, 55,
+ 207,207,207,207,208,208,208,208,209,209,209,209,209,209,209,210,
+ 210,210,210,210,211,211,211,211,211,211,212,212,212,212,212,212,
+ 213,213,213,213,214,214,214,214,110,110,110,110,215,215,215,215,
+ 216,216,216,216,217,217,217,217,218,218,218,218,219,219,219,219,
+ 220,220,220,221,221,221,221,221,221,222,222,222,223,223,223,223,
+ 224,224,224,224,225,225,225,225,226,226,226,226,226,226,227, 94,
+ 228,228,228,228,229,229,229,229,230, 99, 99, 99, 99, 99, 99, 99,
+ 99, 99,102,231, 99,232,102,233,233,233,233,233,234,234,234,234,
+ 234,234, 0, 0, 8, 0, 0, 0, 0, 0,235,236,237, 0,238, 0,
+ 239,239,239,239, 91, 91, 91, 13,240,240,240,240,241,241,241,241,
+ 242,242,242,242,243,243,243,243,244,244,244,244,245,245,245,245,
+ 246,246,246,246,247, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2,
2, 2, 3, 0, 0, 0, 4, 0, 2, 2, 2, 2, 2, 3, 2, 2,
2, 2, 5, 0, 2, 5, 6, 0, 7, 7, 7, 7, 8, 9, 8, 10,
8, 11, 8, 8, 8, 8, 8, 8, 12, 13, 13, 13, 14, 14, 14, 14,
@@ -5123,98 +5347,102 @@ _hb_ucd_u8[13386] =
163,163,163,163,164,164,164,164,165,165,165,165,166,166,166,166,
167,167,167,167,168,168,168,168,169,169,169,169,170,170,170,170,
171,171,171,171,172,172,172,172,173,173,173,173,174,174,174,174,
- 174,174,174,175,176,176,176,176,177,177,177,177,178,178,178,178,
+ 175,175,175,175,176,176,176,176,177, 20, 20, 20,178,178,178,178,
179,179,179,179,180,180,180,180,181,181,181,181,182,182,182,182,
183,183,183,183,184,184,184,184,185,185,185,185,186,186,186,186,
- 187, 45, 45, 45,188,188,188,188,189,189,189,189,190,190,190,190,
- 191,191,191,191,191,191,192,191,193,193,193,193,194,194,194,194,
+ 187,187,187,187,188,188,188,188,189, 45, 45, 45,190,190,190,190,
+ 191,191,191,191,192,192,192,192,193,193,193,193,193,193,194,193,
195,195,195,195,196,196,196,196,197,197,197,197,198,198,198,198,
199,199,199,199,200,200,200,200,201,201,201,201,202,202,202,202,
203,203,203,203,204,204,204,204,205,205,205,205,206,206,206,206,
207,207,207,207,208,208,208,208,209,209,209,209,210,210,210,210,
211,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,
215,215,215,215,216,216,216,216,217,217,217,217,218,218,218,218,
- 219,219,219,219,220,220,220,220,221,221,221,221,222,223,223,223,
- 224,224,224,224,223,223,223,223,225,106,106,106,226,106,106,106,
- 106,227,109,109,228,228,228,228,229,229,229,229, 0,230, 86, 0,
- 0, 0,230, 7, 82,138, 7, 0, 0, 0,231, 86,232,232,232,232,
- 233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,
- 237,237,237,237,238,238,238,238,239, 0, 0, 0, 0, 0, 0, 0,
- 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 19, 0,
- 19, 0, 0, 0, 0, 0, 26, 26, 1, 1, 1, 1, 9, 9, 9, 9,
- 0, 9, 9, 9, 9, 9, 0, 9, 9, 0, 9, 0, 9, 9, 55, 55,
- 55, 55, 55, 55, 6, 6, 6, 6, 6, 1, 1, 6, 6, 4, 4, 4,
- 4, 4, 4, 4, 4, 14, 14, 14, 14, 14, 14, 14, 3, 3, 3, 3,
- 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 1,
- 1, 1, 3, 3, 1, 3, 3, 3, 37, 37, 37, 37, 38, 38, 38, 38,
- 64, 64, 64, 64, 90, 90, 90, 90, 95, 95, 95, 95, 3, 3, 0, 3,
- 7, 7, 7, 7, 7, 1, 1, 1, 1, 7, 7, 7, 0, 0, 7, 7,
- 5, 5, 5, 5, 11, 11, 11, 11, 10, 10, 10, 10, 21, 21, 21, 21,
- 22, 22, 22, 22, 23, 23, 23, 23, 16, 16, 16, 16, 20, 20, 20, 20,
- 36, 36, 36, 36, 24, 24, 24, 24, 24, 24, 24, 0, 18, 18, 18, 18,
- 25, 25, 25, 25, 25, 0, 0, 0, 0, 25, 25, 25, 33, 33, 33, 33,
- 8, 8, 8, 8, 8, 8, 8, 0, 12, 12, 12, 12, 30, 30, 30, 30,
- 29, 29, 29, 29, 28, 28, 28, 28, 34, 34, 34, 34, 35, 35, 35, 35,
- 35, 35, 35, 0, 0, 0, 35, 35, 45, 45, 45, 45, 44, 44, 44, 44,
- 44, 0, 0, 0, 43, 43, 43, 43, 46, 46, 46, 46, 31, 31, 31, 31,
- 32, 32, 0, 0, 32, 0, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48,
- 52, 52, 52, 52, 58, 58, 58, 58, 54, 54, 54, 54, 91, 91, 91, 91,
- 62, 62, 62, 62, 76, 76, 76, 76, 93, 93, 93, 93, 70, 70, 70, 70,
- 73, 73, 73, 73, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0,
- 0, 1, 0, 0, 1, 1, 0, 0, 19, 19, 9, 9, 9, 9, 9, 6,
- 19, 9, 9, 9, 9, 9, 19, 19, 9, 9, 9, 19, 6, 19, 19, 19,
- 19, 19, 19, 9, 0, 0, 0, 19, 0, 0, 9, 0, 0, 0, 19, 19,
- 27, 27, 27, 27, 56, 56, 56, 56, 61, 61, 61, 61, 13, 13, 13, 13,
- 0, 13, 0, 13, 0, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12,
- 0, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 0, 0, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 0, 26, 26, 26, 26, 26, 12, 12, 12,
- 12, 12, 12, 0, 39, 39, 39, 39, 86, 86, 86, 86, 77, 77, 77, 77,
- 79, 79, 79, 79, 60, 60, 60, 60, 65, 65, 65, 65, 75, 75, 75, 75,
- 69, 69, 69, 69, 69, 69, 0, 69, 74, 74, 74, 74, 84, 84, 84, 84,
- 84, 84, 84, 0, 68, 68, 68, 68, 92, 92, 92, 92, 87, 87, 87, 87,
- 19, 9, 19, 19, 19, 19, 0, 0, 2, 2, 2, 2, 19, 19, 19, 4,
- 3, 3, 0, 0, 1, 1, 6, 6, 0, 0, 17, 17, 17, 17, 0, 0,
- 49, 49, 49, 49, 0, 1, 1, 1, 71, 71, 71, 71, 67, 67, 67, 67,
- 42, 42, 42, 42, 41, 41, 41, 41,118,118,118,118, 53, 53, 53, 53,
- 59, 59, 59, 59, 40, 40, 40, 40, 51, 51, 51, 51, 50, 50, 50, 50,
- 135,135,135,135,106,106,106,106,104,104,104,104,161,161,161,161,
+ 219,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,
+ 223,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,
+ 227,227,227,227,228,229,229,229,230,230,230,230,229,229,229,229,
+ 231,106,106,106,232,106,106,106,106,233,109,109,234,234,234,234,
+ 235,235,235,235, 0,236, 86, 0, 0, 0,236, 7, 82,138, 7, 0,
+ 0, 0,237, 86,238,238,238,238,239,239,239,239,240,240,240,240,
+ 241,241,241,241,242,242,242,242,243,243,243,243,244,244,244,244,
+ 245,245,245,245,246, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 19, 0, 19, 0, 0, 0,
+ 0, 0, 26, 26, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9,
+ 9, 9, 0, 9, 9, 0, 9, 0, 9, 9, 55, 55, 55, 55, 55, 55,
+ 6, 6, 6, 6, 6, 1, 1, 6, 6, 4, 4, 4, 4, 4, 4, 4,
+ 4, 14, 14, 14, 14, 14, 14, 14, 3, 3, 3, 3, 3, 0, 3, 3,
+ 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 1, 1, 1, 3, 3,
+ 1, 3, 3, 3, 37, 37, 37, 37, 38, 38, 38, 38, 64, 64, 64, 64,
+ 90, 90, 90, 90, 95, 95, 95, 95, 3, 3, 0, 3, 7, 7, 7, 7,
+ 7, 1, 1, 1, 1, 7, 7, 7, 0, 0, 7, 7, 5, 5, 5, 5,
+ 11, 11, 11, 11, 10, 10, 10, 10, 21, 21, 21, 21, 22, 22, 22, 22,
+ 23, 23, 23, 23, 16, 16, 16, 16, 20, 20, 20, 20, 36, 36, 36, 36,
+ 24, 24, 24, 24, 24, 24, 24, 0, 18, 18, 18, 18, 25, 25, 25, 25,
+ 25, 0, 0, 0, 0, 25, 25, 25, 33, 33, 33, 33, 8, 8, 8, 8,
+ 8, 8, 8, 0, 12, 12, 12, 12, 30, 30, 30, 30, 29, 29, 29, 29,
+ 28, 28, 28, 28, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 0,
+ 0, 0, 35, 35, 45, 45, 45, 45, 44, 44, 44, 44, 44, 0, 0, 0,
+ 43, 43, 43, 43, 46, 46, 46, 46, 31, 31, 31, 31, 32, 32, 0, 0,
+ 32, 0, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 52, 52, 52, 52,
+ 58, 58, 58, 58, 54, 54, 54, 54, 91, 91, 91, 91, 62, 62, 62, 62,
+ 76, 76, 76, 76, 93, 93, 93, 93, 70, 70, 70, 70, 73, 73, 73, 73,
+ 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0,
+ 1, 1, 0, 0, 19, 19, 9, 9, 9, 9, 9, 6, 19, 9, 9, 9,
+ 9, 9, 19, 19, 9, 9, 9, 19, 6, 19, 19, 19, 19, 19, 19, 9,
+ 0, 0, 0, 19, 0, 0, 9, 0, 0, 0, 19, 19, 27, 27, 27, 27,
+ 56, 56, 56, 56, 61, 61, 61, 61, 13, 13, 13, 13, 0, 13, 0, 13,
+ 0, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 0, 15, 15, 15,
+ 15, 15, 15, 15, 15, 1, 1, 0, 0, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 0, 26, 26, 26, 26, 26, 12, 12, 12, 12, 12, 12, 0,
+ 39, 39, 39, 39, 86, 86, 86, 86, 77, 77, 77, 77, 79, 79, 79, 79,
+ 60, 60, 60, 60, 65, 65, 65, 65, 75, 75, 75, 75, 69, 69, 69, 69,
+ 69, 69, 0, 69, 74, 74, 74, 74, 84, 84, 84, 84, 84, 84, 84, 0,
+ 68, 68, 68, 68, 92, 92, 92, 92, 87, 87, 87, 87, 19, 9, 19, 19,
+ 19, 19, 0, 0, 2, 2, 2, 2, 19, 19, 19, 4, 3, 3, 0, 0,
+ 1, 1, 6, 6, 0, 0, 17, 17, 17, 17, 0, 0, 49, 49, 49, 49,
+ 0, 1, 1, 1, 71, 71, 71, 71, 67, 67, 67, 67, 42, 42, 42, 42,
+ 41, 41, 41, 41,118,118,118,118, 53, 53, 53, 53, 59, 59, 59, 59,
+ 40, 40, 40, 40, 51, 51, 51, 51, 50, 50, 50, 50,135,135,135,135,
+ 106,106,106,106,104,104,104,104,161,161,161,161,170,170,170,170,
110,110,110,110, 47, 47, 47, 47, 81, 81, 81, 81,120,120,120,120,
116,116,116,116,128,128,128,128, 66, 66, 66, 66, 72, 72, 72, 72,
98, 98, 98, 98, 97, 97, 97, 97, 57, 57, 57, 57, 88, 88, 88, 88,
117,117,117,117,112,112,112,112, 78, 78, 78, 78, 83, 83, 83, 83,
82, 82, 82, 82,122,122,122,122, 89, 89, 89, 89,130,130,130,130,
- 144,144,144,144,156,156,156,156,156, 3, 3, 3,147,147,147,147,
- 148,148,148,148,158,158,158,158,153,153,153,153,149,149,149,149,
- 94, 94, 94, 94, 85, 85, 85, 85,101,101,101,101, 96, 96, 96, 96,
- 111,111,111,111,100,100,100,100,100, 36, 36, 36,108,108,108,108,
- 129,129,129,129,109,109,109,109,107,107,107,107,107,107,107, 1,
- 137,137,137,137,124,124,124,124,123,123,123,123,114,114,114,114,
- 102,102,102,102,126,126,126,126,142,142,142,142,125,125,125,125,
- 154,154,154,154,150,150,150,150,141,141,141,141,140,140,140,140,
- 121,121,121,121,133,133,133,133,134,134,134,134,138,138,138,138,
- 143,143,143,143,145,145,145,145,163,163,163,163, 63, 63, 63, 63,
- 157,157,157,157, 80, 80, 80, 80,127,127,127,127,115,115,115,115,
- 159,159,159,159,103,103,103,103,119,119,119,119,146,146,146,146,
- 99, 99, 99, 99,136,139, 13, 13,155,155,155,155,136,136,136,136,
- 17, 15, 15, 15, 17, 17, 15, 15, 15, 17, 17, 17,139,139,139,139,
- 105,105,105,105, 0, 0, 0, 1, 0, 0, 1, 1,131,131,131,131,
- 151,151,151,151,160,160,160,160,152,152,152,152,164,164,164,164,
- 113,113,113,113,132,132,132,132, 15, 0, 0, 0, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, 9, 11, 12, 13, 9, 9,
- 9, 14, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 144,144,144,144,165,165,165,165,156,156,156,156,156,156, 3, 3,
+ 147,147,147,147,148,148,148,148,158,158,158,158,153,153,153,153,
+ 149,149,149,149, 94, 94, 94, 94, 85, 85, 85, 85,101,101,101,101,
+ 96, 96, 96, 96,111,111,111,111,100,100,100,100,100, 36, 36, 36,
+ 108,108,108,108,129,129,129,129,109,109,109,109,107,107,107,107,
+ 107,107,107, 1,171,171,171,171,137,137,137,137,124,124,124,124,
+ 123,123,123,123,114,114,114,114,102,102,102,102,126,126,126,126,
+ 142,142,142,142,125,125,125,125,154,154,154,154,150,150,150,150,
+ 141,141,141,141,140,140,140,140,121,121,121,121,169,169,169,169,
+ 133,133,133,133,134,134,134,134,138,138,138,138,143,143,143,143,
+ 145,145,145,145,163,163,163,163, 63, 63, 63, 63,157,157,157,157,
+ 80, 80, 80, 80,127,127,127,127,166,166,166,166,115,115,115,115,
+ 159,159,159,159,103,103,103,103,119,119,119,119,167,167,167,167,
+ 146,146,146,146, 99, 99, 99, 99,136,139, 13, 13,155,155,155,155,
+ 136,136,136,136, 17, 15, 15, 15, 17, 17, 15, 15, 15, 17, 17, 17,
+ 139,139,139,139,105,105,105,105, 0, 0, 0, 1, 0, 0, 1, 1,
+ 131,131,131,131,151,151,151,151,160,160,160,160,152,152,152,152,
+ 164,164,164,164,168,168,168,168,113,113,113,113,132,132,132,132,
+ 15, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9,
+ 9, 10, 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 16, 17, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 18, 19, 20, 9, 21, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 16, 17, 9, 9, 9, 9, 18, 9, 9, 9, 9, 9, 19, 20, 21, 9,
+ 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 23, 9, 9, 9, 9, 9, 24, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
@@ -5223,60 +5451,66 @@ _hb_ucd_u8[13386] =
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 23, 24, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
- 0, 24, 25, 26, 27, 28, 29, 30, 0, 0, 31, 32, 0, 33, 0, 34,
- 0, 35, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0,
+ 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, 28, 29, 30,
+ 0, 0, 31, 32, 0, 33, 0, 34, 0, 35, 0, 0, 0, 0, 36, 37,
+ 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, 0, 46, 47,
+ 0, 0, 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 50, 51, 0, 0, 0, 52, 0, 0, 53, 0,
+ 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 57,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 45,
- 0, 0, 0, 0, 0, 0, 46, 47, 0, 0, 0, 0, 0, 48, 0, 49,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
- 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 54, 0,
- 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59,
- 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
+ 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 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, 69, 70, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99,100,101,102,103, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0,
- 0, 0, 0,105,106, 0,107, 0, 0, 0,108, 0,109, 0,110, 0,
- 111,112,113, 0,114, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,
+ 0, 0, 67, 68, 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,
+ 101,102,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0,105,106, 0,107, 0,
+ 0, 0,108, 0,109, 0,110, 0,111,112,113, 0,114, 0, 0, 0,
+ 115, 0, 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118,119,
- 120,121, 0,122,123,124,125,126, 0,127, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,118,119,120,121, 0,122,123,124,125,126,
+ 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,129,130,131,132,133,
- 134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,
- 150,151,152,153,154,155,156,157, 0, 0, 0,158,159,160,161, 0,
+ 0, 0,128,129,130,131,132,133,134,135,136,137,138,139,140,141,
+ 142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,
+ 0, 0, 0,158,159,160,161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,162,163, 0, 0, 0, 0, 0, 0, 0,164, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,162, 0,
+ 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,165, 0, 0, 0,
+ 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 0,
+ 0, 0, 0, 0, 0, 0,167, 0, 0, 0,168,169, 0, 0,170, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,
- 170, 0, 0, 0, 0,171,172, 0, 0, 0,173,174,175,176,177,178,
- 179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,
- 195,196,197,198,199,200,201,202,203,204,205,206, 0, 0, 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, 1, 2, 3, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0,175, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,176,177, 0, 0, 0, 0,178,179, 0,
+ 0, 0,180,181,182,183,184,185,186,187,188,189,190,191,192,193,
+ 194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,
+ 210,211,212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
+ 3, 4,
};
static const uint16_t
-_hb_ucd_u16[4920] =
+_hb_ucd_u16[5080] =
{
0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12,
13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23,
@@ -5303,82 +5537,85 @@ _hb_ucd_u16[4920] =
47, 47, 165, 166, 167, 47, 47, 47, 47, 47, 47, 47, 47, 168, 146, 146,
47, 169, 47, 47, 47, 170, 171, 172, 160, 160, 173, 174, 32, 32, 32, 32,
175, 47, 47, 176, 177, 122, 178, 179, 180, 47, 181, 61, 47, 47, 182, 183,
- 47, 47, 184, 185, 186, 61, 47, 187, 11, 9, 9, 9, 66, 188, 189, 190,
- 11, 11, 191, 27, 27, 27, 192, 193, 11, 194, 27, 27, 32, 32, 32, 32,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 195, 13, 13, 13, 13, 13, 13,
- 196, 196, 196, 196, 196, 197, 196, 11, 198, 198, 198, 199, 200, 201, 201, 200,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 27, 211, 211, 211, 212, 213, 32,
- 214, 215, 216, 217, 218, 145, 219, 219, 220, 221, 222, 146, 223, 224, 146, 225,
- 226, 226, 226, 226, 226, 226, 226, 226, 227, 146, 228, 146, 146, 146, 146, 229,
- 146, 230, 226, 231, 146, 232, 233, 146, 146, 146, 146, 146, 146, 146, 145, 145,
- 145, 234, 146, 146, 146, 146, 235, 145, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 236, 237, 146, 146, 238, 146, 146, 146, 146, 146, 146, 239, 146,
- 146, 146, 146, 146, 146, 146, 240, 241, 145, 242, 146, 146, 243, 226, 244, 226,
- 245, 246, 226, 226, 226, 247, 226, 248, 146, 146, 146, 226, 249, 146, 146, 146,
- 9, 9, 9, 11, 11, 11, 250, 251, 13, 13, 13, 13, 13, 13, 252, 253,
- 11, 11, 11, 47, 47, 47, 254, 255, 47, 47, 47, 47, 47, 47, 32, 32,
- 256, 257, 258, 259, 260, 261, 262, 262, 263, 264, 265, 266, 267, 47, 47, 47,
- 47, 268, 148, 47, 47, 47, 47, 269, 47, 270, 47, 47, 146, 146, 146, 47,
- 146, 146, 271, 146, 272, 273, 146, 146, 271, 146, 146, 273, 146, 146, 146, 146,
- 47, 47, 47, 47, 146, 146, 146, 146, 47, 274, 47, 47, 47, 47, 47, 47,
- 47, 146, 146, 146, 146, 47, 47, 187, 275, 47, 61, 47, 13, 13, 276, 277,
- 13, 278, 47, 47, 47, 47, 279, 280, 31, 281, 282, 283, 13, 13, 13, 284,
- 285, 286, 287, 288, 289, 290, 11, 291, 292, 47, 293, 294, 47, 47, 47, 295,
- 296, 47, 47, 297, 298, 160, 32, 299, 61, 47, 300, 47, 301, 302, 47, 47,
- 72, 47, 47, 303, 304, 305, 306, 61, 47, 47, 307, 308, 309, 310, 47, 311,
- 47, 47, 47, 312, 58, 313, 314, 315, 47, 47, 47, 11, 11, 316, 317, 11,
- 11, 11, 11, 11, 47, 47, 318, 160, 319, 319, 319, 319, 319, 319, 319, 319,
- 320, 320, 320, 320, 320, 320, 320, 320, 11, 321, 322, 47, 47, 47, 47, 47,
- 47, 47, 47, 323, 31, 324, 47, 47, 47, 47, 47, 325, 146, 47, 47, 47,
- 47, 47, 47, 47, 326, 146, 146, 327, 32, 328, 32, 329, 330, 331, 332, 47,
- 47, 47, 47, 47, 47, 47, 47, 333, 334, 2, 3, 4, 5, 335, 336, 337,
- 47, 338, 47, 47, 47, 47, 339, 340, 341, 145, 145, 342, 219, 219, 219, 343,
- 344, 146, 146, 146, 146, 146, 146, 345, 346, 346, 346, 346, 346, 346, 346, 346,
- 47, 47, 47, 47, 47, 47, 347, 145, 47, 47, 348, 47, 349, 47, 47, 60,
- 47, 350, 47, 47, 47, 351, 219, 219, 9, 9, 147, 11, 11, 47, 47, 47,
- 47, 47, 160, 9, 9, 147, 11, 11, 47, 47, 47, 47, 47, 47, 350, 9,
- 9, 352, 11, 11, 11, 11, 11, 11, 27, 27, 27, 27, 27, 27, 27, 27,
- 47, 47, 47, 47, 47, 353, 47, 354, 47, 47, 355, 145, 145, 145, 47, 356,
- 47, 357, 47, 350, 66, 66, 66, 66, 47, 47, 47, 358, 145, 145, 145, 145,
- 359, 47, 47, 360, 145, 66, 47, 361, 47, 362, 145, 145, 363, 47, 364, 66,
- 47, 47, 47, 365, 47, 366, 47, 366, 47, 365, 144, 145, 145, 145, 145, 145,
- 9, 9, 9, 9, 11, 11, 11, 367, 47, 47, 368, 160, 160, 160, 160, 160,
- 145, 145, 145, 145, 145, 145, 145, 145, 47, 47, 369, 47, 47, 47, 47, 143,
- 47, 362, 370, 47, 60, 371, 66, 47, 372, 66, 66, 47, 373, 145, 47, 47,
- 374, 47, 47, 360, 375, 376, 377, 378, 180, 47, 47, 379, 380, 47, 47, 160,
- 97, 47, 381, 382, 383, 47, 47, 384, 180, 47, 47, 385, 386, 387, 388, 145,
- 47, 47, 389, 390, 359, 32, 32, 32, 47, 47, 365, 47, 47, 391, 172, 160,
- 92, 47, 47, 113, 392, 393, 394, 32, 47, 47, 47, 395, 396, 397, 47, 47,
- 47, 47, 47, 398, 399, 160, 160, 160, 47, 47, 400, 401, 402, 403, 32, 32,
- 47, 47, 47, 404, 405, 160, 66, 66, 47, 47, 406, 407, 160, 160, 160, 160,
- 47, 143, 408, 409, 47, 47, 47, 47, 47, 47, 389, 410, 66, 66, 66, 66,
- 9, 9, 9, 9, 11, 11, 128, 411, 47, 47, 47, 412, 413, 160, 160, 160,
- 47, 47, 47, 47, 47, 414, 415, 416, 417, 47, 47, 418, 419, 420, 47, 47,
- 421, 422, 66, 47, 47, 47, 47, 47, 66, 66, 66, 66, 66, 66, 66, 66,
- 47, 47, 400, 423, 424, 128, 145, 425, 47, 156, 426, 427, 32, 32, 32, 32,
- 47, 47, 47, 359, 428, 160, 47, 47, 429, 430, 160, 160, 160, 160, 160, 160,
- 47, 47, 47, 47, 47, 47, 47, 431, 432, 47, 47, 433, 434, 160, 160, 160,
- 47, 47, 47, 47, 145, 435, 436, 437, 219, 219, 219, 219, 219, 219, 219, 66,
- 47, 47, 47, 47, 47, 47, 47, 424, 47, 47, 47, 208, 438, 32, 32, 32,
- 47, 47, 47, 47, 47, 47, 305, 47, 47, 47, 47, 47, 160, 47, 47, 439,
- 47, 47, 47, 440, 441, 442, 443, 47, 9, 9, 9, 9, 9, 9, 11, 11,
- 145, 444, 66, 66, 66, 66, 66, 66, 47, 47, 47, 47, 391, 445, 416, 416,
- 446, 447, 27, 27, 27, 27, 448, 416, 47, 449, 208, 208, 208, 208, 208, 208,
- 32, 32, 32, 32, 32, 146, 146, 146, 146, 146, 146, 146, 146, 146, 450, 451,
- 452, 146, 453, 146, 146, 146, 146, 146, 146, 146, 146, 146, 454, 146, 146, 146,
- 9, 455, 11, 456, 457, 11, 196, 9, 458, 459, 9, 460, 11, 9, 455, 11,
- 456, 457, 11, 196, 9, 458, 459, 9, 460, 11, 9, 455, 11, 456, 457, 11,
- 196, 9, 458, 459, 9, 460, 11, 9, 455, 11, 196, 9, 461, 462, 463, 464,
- 11, 465, 9, 466, 467, 468, 469, 11, 470, 9, 471, 11, 472, 160, 160, 160,
- 32, 32, 32, 473, 32, 32, 474, 475, 476, 477, 32, 32, 32, 32, 32, 32,
- 478, 11, 11, 11, 11, 11, 11, 11, 32, 32, 32, 27, 27, 27, 27, 27,
- 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 47, 479, 480, 146, 146, 146,
- 47, 47, 481, 32, 47, 47, 482, 483, 47, 47, 47, 47, 47, 47, 484, 160,
- 47, 47, 47, 47, 355, 32, 32, 32, 9, 9, 458, 11, 485, 305, 66, 66,
- 145, 145, 486, 487, 145, 145, 145, 145, 145, 145, 488, 145, 145, 145, 145, 145,
- 47, 47, 47, 47, 47, 47, 47, 226, 489, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 490, 146, 146, 146, 146, 146, 146, 146, 160,
- 208, 208, 208, 208, 208, 208, 208, 208, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47, 47, 184, 185, 186, 61, 47, 187, 188, 9, 9, 9, 66, 189, 190, 191,
+ 11, 11, 192, 27, 27, 27, 193, 194, 11, 195, 27, 27, 32, 32, 32, 32,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 196, 13, 13, 13, 13, 13, 13,
+ 197, 197, 197, 197, 197, 198, 197, 11, 199, 199, 199, 200, 201, 202, 202, 201,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 27, 212, 212, 212, 213, 214, 32,
+ 215, 216, 217, 218, 219, 145, 220, 220, 221, 222, 223, 146, 224, 225, 146, 226,
+ 227, 227, 227, 227, 227, 227, 227, 227, 228, 146, 229, 146, 146, 146, 146, 230,
+ 146, 231, 227, 232, 146, 233, 234, 146, 146, 146, 146, 146, 146, 146, 145, 145,
+ 145, 235, 146, 146, 146, 146, 236, 145, 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 237, 238, 146, 146, 239, 146, 146, 146, 146, 146, 146, 240, 146,
+ 146, 146, 146, 146, 146, 146, 241, 242, 145, 243, 146, 146, 244, 227, 245, 227,
+ 246, 247, 227, 227, 227, 248, 227, 249, 146, 146, 146, 227, 250, 146, 146, 146,
+ 9, 9, 9, 11, 11, 11, 251, 252, 13, 13, 13, 13, 13, 13, 253, 254,
+ 11, 11, 11, 47, 47, 47, 255, 256, 47, 47, 47, 47, 47, 47, 32, 32,
+ 257, 258, 259, 260, 261, 262, 263, 263, 264, 265, 266, 267, 268, 47, 47, 47,
+ 47, 269, 148, 47, 47, 47, 47, 270, 47, 271, 47, 47, 146, 146, 146, 47,
+ 146, 146, 272, 146, 273, 274, 146, 146, 272, 146, 146, 274, 146, 146, 146, 146,
+ 47, 47, 47, 47, 146, 146, 146, 146, 47, 275, 47, 47, 47, 47, 47, 47,
+ 47, 146, 146, 146, 146, 47, 47, 187, 276, 47, 61, 47, 13, 13, 277, 278,
+ 13, 279, 47, 47, 47, 47, 280, 281, 31, 282, 283, 284, 13, 13, 13, 285,
+ 286, 287, 288, 289, 290, 291, 9, 292, 293, 47, 294, 295, 47, 47, 47, 296,
+ 297, 47, 47, 298, 299, 160, 32, 300, 61, 47, 301, 47, 302, 303, 47, 47,
+ 72, 47, 47, 304, 305, 306, 307, 61, 47, 47, 308, 309, 310, 311, 47, 312,
+ 47, 47, 47, 313, 58, 314, 315, 316, 47, 47, 47, 11, 11, 317, 318, 11,
+ 11, 11, 11, 11, 47, 47, 319, 160, 320, 320, 320, 320, 320, 320, 320, 320,
+ 321, 321, 321, 321, 321, 321, 321, 321, 11, 322, 323, 47, 47, 47, 47, 47,
+ 47, 47, 47, 324, 31, 325, 47, 47, 47, 47, 47, 326, 146, 47, 47, 47,
+ 47, 47, 47, 47, 327, 146, 146, 328, 32, 329, 32, 330, 331, 332, 333, 47,
+ 47, 47, 47, 47, 47, 47, 47, 334, 335, 2, 3, 4, 5, 336, 337, 338,
+ 47, 339, 47, 47, 47, 47, 340, 341, 342, 145, 145, 343, 220, 220, 220, 344,
+ 345, 146, 146, 146, 146, 146, 146, 346, 347, 347, 347, 347, 347, 347, 347, 347,
+ 47, 47, 47, 47, 47, 47, 348, 145, 47, 47, 349, 47, 350, 47, 47, 60,
+ 47, 351, 47, 47, 47, 352, 220, 220, 9, 9, 147, 11, 11, 47, 47, 47,
+ 47, 47, 160, 9, 9, 147, 11, 11, 47, 47, 47, 47, 47, 47, 351, 9,
+ 9, 353, 11, 11, 47, 47, 47, 47, 27, 27, 27, 27, 27, 27, 27, 27,
+ 47, 47, 47, 47, 47, 354, 47, 355, 47, 47, 356, 145, 145, 145, 47, 357,
+ 47, 358, 47, 351, 66, 66, 66, 66, 47, 47, 47, 359, 145, 145, 145, 145,
+ 360, 47, 47, 361, 145, 66, 47, 362, 47, 363, 145, 145, 364, 47, 365, 66,
+ 47, 47, 47, 366, 47, 367, 47, 367, 47, 366, 144, 145, 145, 145, 145, 145,
+ 9, 9, 9, 9, 11, 11, 11, 368, 47, 47, 369, 160, 370, 9, 371, 11,
+ 372, 227, 227, 227, 227, 227, 227, 227, 145, 145, 145, 145, 145, 145, 145, 145,
+ 47, 47, 373, 47, 47, 47, 47, 374, 47, 363, 375, 47, 60, 376, 66, 47,
+ 377, 66, 66, 47, 378, 145, 47, 47, 379, 47, 47, 361, 380, 381, 382, 383,
+ 180, 47, 47, 384, 385, 47, 47, 160, 97, 47, 386, 387, 388, 47, 47, 389,
+ 180, 47, 47, 390, 391, 392, 393, 145, 47, 47, 394, 395, 360, 32, 32, 32,
+ 47, 47, 366, 47, 47, 396, 172, 160, 92, 47, 47, 113, 397, 398, 399, 32,
+ 47, 47, 47, 400, 401, 402, 403, 32, 47, 47, 47, 404, 405, 406, 47, 47,
+ 47, 47, 47, 407, 408, 160, 160, 160, 47, 47, 409, 410, 411, 412, 32, 32,
+ 47, 47, 47, 413, 414, 160, 66, 66, 47, 47, 415, 416, 160, 160, 160, 160,
+ 47, 417, 418, 419, 47, 47, 47, 47, 47, 47, 394, 420, 66, 66, 66, 66,
+ 9, 9, 9, 9, 11, 11, 128, 421, 47, 47, 47, 422, 423, 160, 160, 160,
+ 47, 47, 47, 47, 47, 424, 425, 426, 427, 47, 47, 428, 429, 430, 47, 47,
+ 431, 432, 66, 47, 47, 47, 47, 47, 66, 66, 66, 66, 66, 66, 66, 66,
+ 47, 47, 47, 47, 47, 47, 433, 160, 47, 47, 409, 434, 433, 128, 145, 435,
+ 47, 156, 436, 437, 32, 32, 32, 32, 47, 47, 47, 360, 438, 160, 47, 47,
+ 439, 440, 160, 160, 160, 160, 160, 160, 47, 47, 47, 47, 47, 47, 47, 441,
+ 442, 47, 47, 443, 444, 445, 32, 32, 47, 47, 47, 47, 145, 446, 447, 448,
+ 220, 220, 220, 220, 220, 220, 220, 66, 47, 47, 47, 47, 47, 47, 47, 433,
+ 47, 47, 47, 209, 449, 32, 47, 47, 47, 450, 451, 160, 160, 160, 160, 160,
+ 47, 47, 47, 47, 47, 47, 306, 47, 47, 47, 47, 47, 160, 47, 47, 452,
+ 47, 47, 47, 453, 454, 455, 456, 47, 27, 27, 27, 27, 457, 47, 458, 160,
+ 9, 9, 9, 9, 9, 9, 11, 11, 145, 459, 66, 66, 66, 66, 66, 66,
+ 47, 47, 47, 47, 396, 460, 426, 426, 461, 462, 27, 27, 27, 27, 463, 426,
+ 47, 464, 209, 209, 209, 209, 209, 209, 146, 146, 146, 146, 146, 146, 146, 160,
+ 32, 32, 32, 32, 32, 146, 146, 146, 146, 146, 146, 146, 146, 146, 465, 466,
+ 467, 146, 468, 146, 146, 146, 146, 146, 146, 146, 146, 146, 469, 146, 146, 146,
+ 9, 470, 11, 471, 472, 11, 197, 9, 473, 474, 9, 475, 11, 9, 470, 11,
+ 471, 472, 11, 197, 9, 473, 474, 9, 475, 11, 9, 470, 11, 471, 472, 11,
+ 197, 9, 473, 474, 9, 475, 11, 9, 470, 11, 197, 9, 476, 477, 478, 479,
+ 11, 480, 9, 481, 482, 483, 484, 11, 485, 9, 486, 11, 487, 160, 160, 160,
+ 32, 32, 32, 488, 32, 32, 489, 490, 491, 492, 32, 32, 32, 32, 32, 32,
+ 493, 11, 11, 11, 11, 11, 11, 11, 32, 32, 32, 27, 27, 27, 27, 27,
+ 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 47, 494, 495, 146, 146, 146,
+ 47, 47, 450, 32, 47, 47, 374, 496, 47, 47, 47, 47, 47, 47, 497, 160,
+ 47, 47, 47, 47, 47, 47, 450, 498, 47, 47, 47, 47, 356, 32, 32, 32,
+ 9, 9, 473, 11, 499, 306, 66, 66, 145, 145, 500, 501, 145, 145, 145, 145,
+ 145, 145, 502, 145, 145, 145, 145, 145, 47, 47, 47, 47, 47, 47, 47, 227,
+ 503, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 504,
+ 209, 209, 209, 209, 209, 209, 209, 209, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, 942, 946, 948, 0, 962,
969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040,1041,1042,1043,1047, 0,
0,1080,1081,1082,1086,1110, 0, 0,1124,1125,1126,1127,1131,1133, 0,1147,
@@ -5541,16 +5778,23 @@ _hb_ucd_u16[4920] =
0, 0,1602,1603,1934,1935,1574,1575,1576,1577,1579,1580,1581,1583,1584, 0,
1585,1587,1588,1589,1591, 0,1592, 0,1593,1594, 0,1595,1596, 0,1598,1599,
1600,1601,1604,1582,1578,1590,1597, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,1936, 0,1937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,1938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1939,1940, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,1944,1943, 0,1945, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,1946,1947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,1949,1950,1951,1952,1953,1954,1955, 0, 0, 0,
+ 0,1936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1937, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,1938, 0,1939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,1940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,1943,1944, 0, 0, 0, 0, 0, 0,1945, 0,1946, 0, 0,
+ 0, 0, 0, 0, 0, 0,1947, 0, 0,1948, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1950, 0,1949,
+ 1951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,1953,1952, 0,1954, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,1955,1956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1957, 0, 0, 0, 0, 0, 0, 0, 0,1958,1961,1959,1965,1960,1962,1964,
+ 1963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1967,1966,1968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,1969,1970,1971,1972,1973,1974,1975, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,1956,1957,1958,1960,1959,1961, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,1976,1977,1978,1980,1979,1981, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 106, 104, 107, 826, 114, 118, 119, 121,
123, 124, 127, 125, 34, 830, 130, 131, 132, 137, 827, 35, 133, 139, 829, 142,
143, 112, 144, 145, 924, 151, 152, 37, 157, 158, 159, 160, 38, 165, 166, 169,
@@ -5601,12 +5845,12 @@ _hb_ucd_i16[92] =
static inline uint_fast8_t
_hb_ucd_gc (unsigned u)
{
- return u<1114112u?_hb_ucd_u8[5096+(((_hb_ucd_u8[1168+(((_hb_ucd_u16[((_hb_ucd_u8[544+(((_hb_ucd_u8[u>>1>>3>>3>>4])<<4)+((u>>1>>3>>3)&15u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2;
+ return u<1114112u?_hb_ucd_u8[5208+(((_hb_ucd_u8[1168+(((_hb_ucd_u16[((_hb_ucd_u8[544+(((_hb_ucd_u8[u>>1>>3>>3>>4])<<4)+((u>>1>>3>>3)&15u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2;
}
static inline uint_fast8_t
_hb_ucd_ccc (unsigned u)
{
- return u<125259u?_hb_ucd_u8[7054+(((_hb_ucd_u8[6498+(((_hb_ucd_u8[6038+(((_hb_ucd_u8[5686+(((_hb_ucd_u8[5440+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0;
+ return u<125259u?_hb_ucd_u8[7206+(((_hb_ucd_u8[6638+(((_hb_ucd_u8[6162+(((_hb_ucd_u8[5802+(((_hb_ucd_u8[5556+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0;
}
static inline unsigned
_hb_ucd_b4 (const uint8_t* a, unsigned i)
@@ -5616,17 +5860,17 @@ _hb_ucd_b4 (const uint8_t* a, unsigned i)
static inline int_fast16_t
_hb_ucd_bmg (unsigned u)
{
- return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[7946+(((_hb_ucd_u8[7714+(((_hb_ucd_u8[7618+(((_hb_ucd_b4(7554+_hb_ucd_u8,u>>1>>2>>3>>3))<<3)+((u>>1>>2>>3)&7u))])<<3)+((u>>1>>2)&7u))])<<2)+((u>>1)&3u))])<<1)+((u)&1u)]:0;
+ return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[8098+(((_hb_ucd_u8[7866+(((_hb_ucd_u8[7770+(((_hb_ucd_b4(7706+_hb_ucd_u8,u>>1>>2>>3>>3))<<3)+((u>>1>>2>>3)&7u))])<<3)+((u>>1>>2)&7u))])<<2)+((u>>1)&3u))])<<1)+((u)&1u)]:0;
}
static inline uint_fast8_t
_hb_ucd_sc (unsigned u)
{
- return u<918016u?_hb_ucd_u8[11244+(((_hb_ucd_u8[10280+(((_hb_ucd_u8[9292+(((_hb_ucd_u8[8612+(((_hb_ucd_u8[8308+(((_hb_ucd_u8[8194+(u>>2>>2>>2>>3>>4)])<<4)+((u>>2>>2>>2>>3)&15u))])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:2;
+ return u<918016u?_hb_ucd_u8[11464+(((_hb_ucd_u8[10472+(((_hb_ucd_u8[9452+(((_hb_ucd_u8[8764+(((_hb_ucd_u8[8460+(((_hb_ucd_u8[8346+(u>>2>>2>>2>>3>>4)])<<4)+((u>>2>>2>>2>>3)&15u))])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:2;
}
static inline uint_fast16_t
_hb_ucd_dm (unsigned u)
{
- return u<195102u?_hb_ucd_u16[1608+(((_hb_ucd_u8[12586+(((_hb_ucd_u8[12204+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0;
+ return u<195102u?_hb_ucd_u16[1656+(((_hb_ucd_u8[12834+(((_hb_ucd_u8[12452+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0;
}
#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh
index e607e8ca829..4bc8d64c28f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh
@@ -7,13 +7,13 @@
* on file with this header:
*
* # emoji-data.txt
- * # Date: 2023-02-01, 02:22:54 GMT
- * # © 2023 Unicode®, Inc.
+ * # Date: 2024-05-01, 21:25:24 GMT
+ * # © 2024 Unicode®, Inc.
* # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
- * # For terms of use, see https://www.unicode.org/terms_of_use.html
+ * # For terms of use and license, see https://www.unicode.org/terms_of_use.html
* #
* # Emoji Data for UTS #51
- * # Used with Emoji Version 15.1 and subsequent minor revisions (if any)
+ * # Used with Emoji Version 16.0 and subsequent minor revisions (if any)
* #
* # For documentation and usage, see https://www.unicode.org/reports/tr51
*/
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh
index 39aaee5baa7..2b1921c28f0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh
@@ -34,6 +34,9 @@
#include "hb.hh"
+// Hack. See: https://github.com/harfbuzz/harfbuzz/pull/4529#discussion_r1769638033
+#define _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR ((hb_unicode_general_category_t) 30)
+
extern HB_INTERNAL const uint8_t _hb_modified_combining_class[256];
/*
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh
index 0ceeb99f500..fe466fe1f8f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh
@@ -84,6 +84,7 @@
#pragma GCC diagnostic error "-Wredundant-decls"
#pragma GCC diagnostic error "-Wreorder"
#pragma GCC diagnostic error "-Wsign-compare"
+#pragma GCC diagnostic error "-Wstrict-flex-arrays"
#pragma GCC diagnostic error "-Wstrict-prototypes"
#pragma GCC diagnostic error "-Wstring-conversion"
#pragma GCC diagnostic error "-Wswitch-enum"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
index c6eae1d2c86..9ba5ce7163a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
@@ -450,7 +450,13 @@ hb_headers = hb_base_headers
harfbuzz_deps = [thread_dep, m_dep] + harfbuzz_extra_deps
-libharfbuzz_link_language = 'c'
+if get_option('with_libstdcxx')
+ chosen_linker = 'cpp'
+else
+ # Use a C linker, not C++; Don't link to libstdc++
+ chosen_linker = 'c'
+endif
+libharfbuzz_link_language = chosen_linker
if conf.get('HAVE_FREETYPE', 0) == 1
hb_sources += hb_ft_sources
@@ -551,8 +557,8 @@ hb_supported_features_h = configure_file(input: 'hb-features.h.in',
configuration: hb_supported_features,
install: false)
-# Base and default-included sources and headers
+# Base and default-included sources and headers
gen_def = find_program('gen-def.py')
gen_def_cmd = [gen_def, '@OUTPUT@', '@INPUT@']
if get_option('experimental_api')
@@ -621,7 +627,7 @@ libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources,
version: version,
install: true,
darwin_versions: darwin_versions,
- link_language: 'c',
+ link_language: chosen_linker,
)
custom_target('harfbuzz-subset.cc',
@@ -661,7 +667,7 @@ if conf.get('HAVE_CAIRO', 0) == 1
version: version,
install: true,
darwin_versions: darwin_versions,
- link_language: 'c',
+ link_language: chosen_linker,
)
install_headers(hb_cairo_headers, subdir: meson.project_name())
@@ -780,7 +786,7 @@ if have_icu and not have_icu_builtin
install: true,
darwin_versions: darwin_versions,
# ICU links to stdc++ anyway so the default linker is good
- # link_language: 'c',
+ # link_language: chosen_linker,
)
libharfbuzz_icu_dep = declare_dependency(
@@ -947,7 +953,7 @@ if have_gobject
version: version,
install: true,
darwin_versions: darwin_versions,
- link_language: 'c',
+ link_language: chosen_linker,
)
gir = find_program('g-ir-scanner', required: get_option('introspection'))
@@ -1025,7 +1031,7 @@ if get_option('tests').enabled()
if cpp.get_argument_syntax() != 'msvc' and not meson.is_cross_build() # ensure the local tools are usable
dist_check_script += ['check-static-inits', 'check-symbols']
- if get_option('wasm').disabled()
+ if get_option('wasm').disabled() and not get_option('with_libstdcxx')
dist_check_script += ['check-libstdc++']
endif
endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt
index cb07643bbb3..1bb4ed9501b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt
@@ -9,6 +9,7 @@
# Updated for Unicode 14.0 by Andrew Glass 2021-09-28
# Updated for Unicode 15.0 by Andrew Glass 2022-09-16
# Updated for Unicode 15.1 by Andrew Glass 2023-09-14
+# Updated for Unicode 16.0 by Andrew Glass 2024-09-11
# ================================================
# ================================================
@@ -27,7 +28,6 @@ A9BF ; Bottom # Mc JAVANESE CONSONANT SIGN CAKRA
11130 ; Bottom # Mn CHAKMA VOWEL SIGN OI
1BF2..1BF3 ; Bottom # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN # see USE issue #20
-
# ================================================
# Indic_Positional_Category=Left
@@ -80,9 +80,8 @@ AA35   ; Top # Mn       CHAM CONSONANT SIGN
16F4F ; Bottom # Mn MIAO SIGN CONSONANT MODIFIER BAR
16F51..16F87 ; Bottom # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
16F8F..16F92 ; Bottom # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
-#HIEROGLYPHS defined here while ISC is being used as a proxy for dedicated Hieroglyph cluster
-13440 ; Bottom # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
-13447..13455 ; Bottom # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+1E5EE ; Bottom # Mn OL ONAL SIGN MU # Not really below, but need to override to fit into Universal model
+1E5EF ; Bottom # Mn OL ONAL SIGN IKIR
# ================================================
@@ -95,9 +94,11 @@ AA35   ; Top # Mn       CHAM CONSONANT SIGN
07EB..07F3 ; Top # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
07FD ; Top # Mn NKO DANTAYALAN # Not really top, but assigned here to allow ccc to control mark order
1885..1886 ; Top # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1B6C ; Top # Mn BALINESE MUSICAL SYMBOL COMBINING ENDEP
1CF8..1CF9 ; Top # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
10D24..10D27 ; Top # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
10EAB..10EAC ; Top # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+10D69..10D6D ; Top # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
16B30..16B36 ; Top # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
1E130..1E136 ; Top # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
1E2AE ; Top # Mn TOTO SIGN RISING TONE
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt
index 43326c12d18..309ed587568 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt
@@ -7,6 +7,7 @@
# Updated for Unicode 14.0 by Andrew Glass 2021-09-25
# Updated for Unicode 15.0 by Andrew Glass 2022-09-16
# Updated for Unicode 15.1 by Andrew Glass 2023-09-14
+# Updated for Unicode 16.0 by Andrew Glass 2024-09-11
# ================================================
# OVERRIDES TO ASSIGNED VALUES
@@ -16,6 +17,7 @@
193A ; Bindu # Mn LIMBU SIGN KEMPHRENG
AA29 ; Bindu # Mn CHAM VOWEL SIGN AA
10A0D ; Bindu # Mn KHAROSHTHI SIGN DOUBLE RING BELOW
+113CE ; Bindu # Mn TULU-TIGALARI SIGN VIRAMA
# ================================================
@@ -30,6 +32,16 @@ AA29 ; Bindu # Mn CHAM VOWEL SIGN AA
# ================================================
+# Indic_Syllabic_Category=Consonant_With_Stacker
+11A3A ; Consonant_With_Stacker # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+
+# ================================================
+
+# Indic_Syllabic_Category=Consonant_Subjoined
+11A3B..11A3E ; Consonant_Subjoined # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+
+# ================================================
+
# Indic_Syllabic_Category=Consonant_Final_Modifier
1C36 ; Consonant_Final_Modifier # Mn LEPCHA SIGN RAN
@@ -43,6 +55,7 @@ AA29 ; Bindu # Mn CHAM VOWEL SIGN AA
# Indic_Syllabic_Category=Nukta
0F71 ; Nukta # Mn TIBETAN VOWEL SIGN AA # Reassigned to get this before an above vowel, but see #22
1BF2..1BF3 ; Nukta # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN # see USE issue #20
+113CF ; Nukta # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
# ================================================
@@ -71,8 +84,9 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN
1800 ; Consonant # Po MONGOLIAN BIRGA # Reassigned so that legacy Birga + MFVS sequences still work
1807 ; Consonant # Po MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
180A ; Consonant # Po MONGOLIAN NIRUGU
-1820..1878 ; Consonant # Lo [88] MONGOLIAN LETTER A..MONGOLIAN LETTER CHA WITH TWO DOTS
+1820..1842 ; Consonant # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
1843 ; Consonant # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844..1878 ; Consonant # Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
2D30..2D67 ; Consonant # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
2D6F ; Consonant # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
10570..1057A ; Consonant # Lo [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
@@ -86,6 +100,10 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN
10AC0..10AC7 ; Consonant # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
10AC9..10AE4 ; Consonant # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
10D00..10D23 ; Consonant # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+10D4A..10D4F ; Consonant # Lo [6] GARAY VOWEL SIGN A..GARAY SUKUN
+10D50..10D65 ; Consonant # Lu [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D70..10D85 ; Consonant # Ll [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
+10D6F ; Consonant # Lm GARAY REDUPLICATION MARK
10E80..10EA9 ; Consonant # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EB0..10EB1 ; Consonant # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
10F30..10F45 ; Consonant # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
@@ -95,6 +113,7 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN
16F00..16F4A ; Consonant # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
16FE4 ; Consonant # Mn KHITAN SMALL SCRIPT FILLER # Avoids Mn pushing this into VOWEL class
18B00..18CD5 ; Consonant # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
+18CFF ; Consonant # Lo KHITAN SMALL SCRIPT CHARACTER-18CFF
1BC00..1BC6A ; Consonant # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
1BC70..1BC7C ; Consonant # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
1BC80..1BC88 ; Consonant # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
@@ -107,6 +126,8 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN
1E2C0..1E2EB ; Consonant # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH
1E4D0..1E4EA ; Consonant # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
1E4EB ; Consonant # Lm NAG MUNDARI SIGN OJOD
+1E5D0..1E5ED ; Consonant # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5F0 ; Consonant # Lo OL ONAL SIGN HODDOND
1E900..1E921 ; Consonant # Lu [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
1E922..1E943 ; Consonant # Ll [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
1E94B ; Consonant # Lm ADLAM NASALIZATION MARK
@@ -149,6 +170,7 @@ FE00..FE0F ; Modifying_Letter # Mn [16] VARIATION SELECTOR-1..VARIATION SEL
1E140..1E149 ; Number # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
1E2F0..1E2F9 ; Number # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
1E4F0..1E4F9 ; Number # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5F1..1E5FA ; Number # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
1E950..1E959 ; Number # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
# ================================================
@@ -173,18 +195,13 @@ FE00..FE0F ; Modifying_Letter # Mn [16] VARIATION SELECTOR-1..VARIATION SEL
# ================================================
-# Indic_Syllabic_Category=Vowel_Independent
-AAB1 ; Vowel_Independent # Lo TAI VIET VOWEL AA
-AABA ; Vowel_Independent # Lo TAI VIET VOWEL UA
-AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN
-
-# ================================================
-
# Indic_Syllabic_Category=Vowel_Dependent
0B55 ; Vowel_Dependent # Mn ORIYA SIGN OVERLINE
+10D69..10D6D ; Vowel_Dependent # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
10EAB..10EAC ; Vowel_Dependent # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
16F51..16F87 ; Vowel_Dependent # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
1E4EC..1E4EF ; Vowel_Dependent # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+1E5EE..1E5EF ; Vowel_Dependent # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
# ================================================
@@ -207,6 +224,7 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN
13000..1342F ; Hieroglyph # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
1343C..1343F ; Hieroglyph # Cf [4] EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE..END WALLED ENCLOSURE
13441..13446 ; Hieroglyph # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..HIEROGLYPH WIDE LOST SIGN
+13460..143FA ; Hieroglyph # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
# ================================================
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc
index 16a43381b0a..1e07d27d3b6 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc
@@ -25,7 +25,7 @@
#include "hb-ot-var-cvar-table.hh"
// cvar table data from Multi-ABC.ttf
-const char cvar_data[] = "\x0\x1\x0\x0\x0\x2\x0\x14\x0\x51\xa0\x0\xc0\x0\x0\x54\xa0\x0\x40\x0\x2a\x29\x17\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\xd\xff\x0\xfd\x1\x0\xff\x0\xfd\x1\x0\xdb\xdb\xe6\xe6\x82\x0\xfd\x84\x6\xfd\x0\x2\xe3\xe3\xec\xec\x82\x4\x1\xe3\xe3\xec\xec\x82\x0\x1\x2a\x29\x17\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\xd\x1\x0\x5\xfd\x0\x1\x0\x5\xfd\x0\x61\x61\x44\x44\x82\x0\x5\x81\x9\x1\xff\x1\x7\xff\xfb\x49\x49\x35\x35\x82\x4\xff\x49\x49\x35\x35\x82\x0\xff";
+const unsigned char cvar_data[] = "\x0\x1\x0\x0\x0\x2\x0\x14\x0\x51\xa0\x0\xc0\x0\x0\x54\xa0\x0\x40\x0\x2a\x29\x17\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\xd\xff\x0\xfd\x1\x0\xff\x0\xfd\x1\x0\xdb\xdb\xe6\xe6\x82\x0\xfd\x84\x6\xfd\x0\x2\xe3\xe3\xec\xec\x82\x4\x1\xe3\xe3\xec\xec\x82\x0\x1\x2a\x29\x17\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\xd\x1\x0\x5\xfd\x0\x1\x0\x5\xfd\x0\x61\x61\x44\x44\x82\x0\x5\x81\x9\x1\xff\x1\x7\xff\xfb\x49\x49\x35\x35\x82\x4\xff\x49\x49\x35\x35\x82\x0\xff";
static void
test_decompile_cvar ()
@@ -45,7 +45,7 @@ test_decompile_cvar ()
const OT::TupleVariationData* tuple_var_data = reinterpret_cast<const OT::TupleVariationData*> (cvar_data + 4);
unsigned len = sizeof (cvar_data);
- hb_bytes_t var_data_bytes{cvar_data+4, len - 4};
+ hb_bytes_t var_data_bytes{(const char* ) cvar_data + 4, len - 4};
bool result = OT::TupleVariationData::get_tuple_iterator (var_data_bytes, axis_count, cvar_table,
shared_indices, &iterator);
assert (result);
@@ -131,22 +131,22 @@ test_decompile_cvar ()
bool res = tuple_variations.compile_bytes (axes_index_map, axis_idx_tag_map, false);
assert (res);
assert (tuple_variations.tuple_vars[0].compiled_tuple_header.length == 6);
- const char tuple_var_header_1[] = "\x0\x51\xa0\x0\xc0\x0";
+ const unsigned char tuple_var_header_1[] = "\x0\x51\xa0\x0\xc0\x0";
for (unsigned i = 0; i < 6; i++)
assert(tuple_variations.tuple_vars[0].compiled_tuple_header.arrayZ[i] == tuple_var_header_1[i]);
assert (tuple_variations.tuple_vars[1].compiled_tuple_header.length == 6);
- const char tuple_var_header_2[] = "\x0\x54\xa0\x0\x40\x0";
+ const unsigned char tuple_var_header_2[] = "\x0\x54\xa0\x0\x40\x0";
for (unsigned i = 0; i < 6; i++)
assert(tuple_variations.tuple_vars[1].compiled_tuple_header.arrayZ[i] == tuple_var_header_2[i]);
assert (tuple_variations.tuple_vars[0].compiled_deltas.length == 37);
assert (tuple_variations.tuple_vars[1].compiled_deltas.length == 40);
- const char compiled_deltas_1[] = "\x0d\xff\x00\xfe\x01\x00\xff\x00\xfe\x01\x00\xed\xed\xf3\xf3\x82\x00\xfe\x84\x06\xfe\x00\x01\xf1\xf1\xf6\xf6\x82\x04\x01\xf1\xf1\xf6\xf6\x82\x00\x01";
+ const unsigned char compiled_deltas_1[] = "\x0d\xff\x00\xfe\x01\x00\xff\x00\xfe\x01\x00\xed\xed\xf3\xf3\x82\x00\xfe\x84\x06\xfe\x00\x01\xf1\xf1\xf6\xf6\x82\x04\x01\xf1\xf1\xf6\xf6\x82\x00\x01";
for (unsigned i = 0; i < 37; i++)
assert (tuple_variations.tuple_vars[0].compiled_deltas.arrayZ[i] == compiled_deltas_1[i]);
- const char compiled_deltas_2[] = "\x0d\x01\x00\x04\xfe\x00\x01\x00\x04\xfe\x00\x44\x44\x30\x30\x82\x00\x04\x81\x09\x01\xff\x01\x05\xff\xfc\x33\x33\x25\x25\x82\x04\xff\x33\x33\x25\x25\x82\x00\xff";
+ const unsigned char compiled_deltas_2[] = "\x0d\x01\x00\x04\xfe\x00\x01\x00\x04\xfe\x00\x44\x44\x30\x30\x82\x00\x04\x81\x09\x01\xff\x01\x05\xff\xfc\x33\x33\x25\x25\x82\x04\xff\x33\x33\x25\x25\x82\x00\xff";
for (unsigned i = 0; i < 40; i++)
assert (tuple_variations.tuple_vars[1].compiled_deltas.arrayZ[i] == compiled_deltas_2[i]);
}
diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac
index a31a3e50ca1..fec6ff24cc8 100644
--- a/Build/source/libs/harfbuzz/version.ac
+++ b/Build/source/libs/harfbuzz/version.ac
@@ -8,4 +8,4 @@ dnl
dnl --------------------------------------------------------
dnl
dnl m4-include this file to define the current harfbuzz version
-m4_define([harfbuzz_version], [9.0.0])
+m4_define([harfbuzz_version], [10.0.1])
diff --git a/Build/source/libs/libpng/ChangeLog b/Build/source/libs/libpng/ChangeLog
index ec0a78c51f8..4afa6005264 100644
--- a/Build/source/libs/libpng/ChangeLog
+++ b/Build/source/libs/libpng/ChangeLog
@@ -1,3 +1,8 @@
+2024-09-13 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+
+ Import libpng-1.6.44.
+ * version.ac: Adjust.
+
2024-04-07 Karl Berry <karl@freefriends.org>
* configure.ac (AM_PROG_AR): include for cosmopolitan, from Luigi.
diff --git a/Build/source/libs/libpng/README b/Build/source/libs/libpng/README
index f4ae444eb22..515904aea4d 100644
--- a/Build/source/libs/libpng/README
+++ b/Build/source/libs/libpng/README
@@ -1,4 +1,4 @@
- Building libpng-1.6.43 as part of the TL tree
+ Building libpng-1.6.44 as part of the TL tree
=============================================
This directory libs/libpng/ uses a proxy Makefile.am to build the libpng library
@@ -14,4 +14,4 @@ copied to libs/libpng/configure.ac.
=============================
2009-07-23 Peter Breitenlohner <peb@mppmu.mpg.de>
-2024-02-24 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+2024-09-13 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
diff --git a/Build/source/libs/libpng/TLpatches/ChangeLog b/Build/source/libs/libpng/TLpatches/ChangeLog
index 996e52a48fa..19136b0aa46 100644
--- a/Build/source/libs/libpng/TLpatches/ChangeLog
+++ b/Build/source/libs/libpng/TLpatches/ChangeLog
@@ -1,3 +1,7 @@
+2024-09-13 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+
+ Import libpng-1.6.44.
+
2024-02-24 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
Import libpng-1.6.43.
diff --git a/Build/source/libs/libpng/TLpatches/TL-Changes b/Build/source/libs/libpng/TLpatches/TL-Changes
index f22fe37d330..20db4d347a4 100644
--- a/Build/source/libs/libpng/TLpatches/TL-Changes
+++ b/Build/source/libs/libpng/TLpatches/TL-Changes
@@ -1,5 +1,5 @@
-Changes applied to the libpng-1.6.43/ tree as obtained from:
- https://sourceforge.net/projects/libpng/files/libpng16/1.6.43/
+Changes applied to the libpng-1.6.44/ tree as obtained from:
+ https://sourceforge.net/projects/libpng/files/libpng16/1.6.44/
Copied:
scripts/pnglibconf.h.prebuilt -> pnglibconf.h
diff --git a/Build/source/libs/libpng/configure b/Build/source/libs/libpng/configure
index 6cb5a5c20c9..fc988d5d8da 100755
--- a/Build/source/libs/libpng/configure
+++ b/Build/source/libs/libpng/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for libpng (TeX Live) 1.6.43.
+# Generated by GNU Autoconf 2.72 for libpng (TeX Live) 1.6.44.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -604,8 +604,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libpng (TeX Live)'
PACKAGE_TARNAME='libpng--tex-live-'
-PACKAGE_VERSION='1.6.43'
-PACKAGE_STRING='libpng (TeX Live) 1.6.43'
+PACKAGE_VERSION='1.6.44'
+PACKAGE_STRING='libpng (TeX Live) 1.6.44'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1342,7 +1342,7 @@ 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 libpng (TeX Live) 1.6.43 to adapt to many kinds of systems.
+'configure' configures libpng (TeX Live) 1.6.44 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1414,7 +1414,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libpng (TeX Live) 1.6.43:";;
+ short | recursive ) echo "Configuration of libpng (TeX Live) 1.6.44:";;
esac
cat <<\_ACEOF
@@ -1534,7 +1534,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libpng (TeX Live) configure 1.6.43
+libpng (TeX Live) configure 1.6.44
generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc.
@@ -1861,7 +1861,7 @@ 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 libpng (TeX Live) $as_me 1.6.43, which was
+It was created by libpng (TeX Live) $as_me 1.6.44, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
@@ -4822,7 +4822,7 @@ fi
# Define the identity of the package.
PACKAGE='libpng--tex-live-'
- VERSION='1.6.43'
+ VERSION='1.6.44'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -7996,7 +7996,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libpng (TeX Live) $as_me 1.6.43, which was
+This file was extended by libpng (TeX Live) $as_me 1.6.44, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -8064,7 +8064,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-libpng (TeX Live) config.status 1.6.43
+libpng (TeX Live) config.status 1.6.44
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/libs/libpng/libpng-src/ANNOUNCE b/Build/source/libs/libpng/libpng-src/ANNOUNCE
index bc147adb78b..a2a7ac363a4 100644
--- a/Build/source/libs/libpng/libpng-src/ANNOUNCE
+++ b/Build/source/libs/libpng/libpng-src/ANNOUNCE
@@ -1,5 +1,5 @@
-libpng 1.6.43 - February 23, 2024
-=================================
+libpng 1.6.44 - September 12, 2024
+==================================
This is a public release of libpng, intended for use in production code.
@@ -9,13 +9,13 @@ Files available for download
Source files with LF line endings (for Unix/Linux):
- * libpng-1.6.43.tar.xz (LZMA-compressed, recommended)
- * libpng-1.6.43.tar.gz (deflate-compressed)
+ * libpng-1.6.44.tar.xz (LZMA-compressed, recommended)
+ * libpng-1.6.44.tar.gz (deflate-compressed)
Source files with CRLF line endings (for Windows):
- * lpng1643.7z (LZMA-compressed, recommended)
- * lpng1643.zip (deflate-compressed)
+ * lpng1644.7z (LZMA-compressed, recommended)
+ * lpng1644.zip (deflate-compressed)
Other information:
@@ -25,36 +25,29 @@ Other information:
* TRADEMARK.md
-Changes from version 1.6.42 to version 1.6.43
+Changes from version 1.6.43 to version 1.6.44
---------------------------------------------
- * Fixed the row width check in png_check_IHDR().
- This corrected a bug that was specific to the 16-bit platforms,
- and removed a spurious compiler warning from the 64-bit builds.
- (Reported by Jacek Caban; fixed by John Bowler)
- * Added eXIf chunk support to the push-mode reader in pngpread.c.
- (Contributed by Chris Blume)
- * Added contrib/pngexif for the benefit of the users who would like
- to inspect the content of eXIf chunks.
- * Added contrib/conftest/basic.dfa, a basic build-time configuration.
+ * Hardened calculations in chroma handling to prevent overflows, and
+ relaxed a constraint in cHRM validation to accomodate the standard
+ ACES AP1 set of color primaries.
(Contributed by John Bowler)
- * Fixed a preprocessor condition in pngread.c that broke build-time
- configurations like contrib/conftest/pngcp.dfa.
- (Contributed by John Bowler)
- * Added CMake build support for LoongArch LSX.
- (Contributed by GuXiWei)
- * Fixed a CMake build error that occurred under a peculiar state of the
- dependency tree. This was a regression introduced in libpng-1.6.41.
- (Contributed by Dan Rosser)
- * Marked the installed libpng headers as system headers in CMake.
- (Contributed by Benjamin Buch)
- * Updated the build support for RISCOS.
- (Contributed by Cameron Cawley)
- * Updated the makefiles to allow cross-platform builds to initialize
- conventional make variables like AR and ARFLAGS.
- * Added various improvements to the CI scripts in areas like version
- consistency verification and text linting.
- * Added version consistency verification to pngtest.c also.
+ * Removed the ASM implementation of ARM Neon optimizations and updated
+ the build accordingly. Only the remaining C implementation shall be
+ used from now on, thus ensuring the support of the PAC/BTI security
+ features on ARM64.
+ (Contributed by Ross Burton and John Bowler)
+ * Fixed the pickup of the PNG_HARDWARE_OPTIMIZATIONS option in the
+ CMake build on FreeBSD/amd64. This is an important performance fix
+ on this platform.
+ * Applied various fixes and improvements to the CMake build.
+ (Contributed by Eric Riff, Benjamin Buch and Erik Scholz)
+ * Added fuzzing targets for the simplified read API.
+ (Contributed by Mikhail Khachayants)
+ * Fixed a build error involving pngtest.c under a custom config.
+ This was a regression introduced in a code cleanup in libpng-1.6.43.
+ (Contributed by Ben Wagner)
+ * Fixed and improved the config files for AppVeyor CI and Travis CI.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
diff --git a/Build/source/libs/libpng/libpng-src/CHANGES b/Build/source/libs/libpng/libpng-src/CHANGES
index 441b57ecf1a..724ccca2d65 100644
--- a/Build/source/libs/libpng/libpng-src/CHANGES
+++ b/Build/source/libs/libpng/libpng-src/CHANGES
@@ -6196,6 +6196,28 @@ Version 1.6.43 [February 23, 2024]
consistency verification and text linting.
Added version consistency verification to pngtest.c also.
+Version 1.6.44 [September 12, 2024]
+ Hardened calculations in chroma handling to prevent overflows, and
+ relaxed a constraint in cHRM validation to accomodate the standard
+ ACES AP1 set of color primaries.
+ (Contributed by John Bowler)
+ Removed the ASM implementation of ARM Neon optimizations and updated
+ the build accordingly. Only the remaining C implementation shall be
+ used from now on, thus ensuring the support of the PAC/BTI security
+ features on ARM64.
+ (Contributed by Ross Burton and John Bowler)
+ Fixed the pickup of the PNG_HARDWARE_OPTIMIZATIONS option in the
+ CMake build on FreeBSD/amd64. This is an important performance fix
+ on this platform.
+ Applied various fixes and improvements to the CMake build.
+ (Contributed by Eric Riff, Benjamin Buch and Erik Scholz)
+ Added fuzzing targets for the simplified read API.
+ (Contributed by Mikhail Khachayants)
+ Fixed a build error involving pngtest.c under a custom config.
+ This was a regression introduced in a code cleanup in libpng-1.6.43.
+ (Contributed by Ben Wagner)
+ Fixed and improved the config files for AppVeyor CI and Travis CI.
+
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
Subscription is required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
diff --git a/Build/source/libs/libpng/libpng-src/CMakeLists.txt b/Build/source/libs/libpng/libpng-src/CMakeLists.txt
index ad3f2427dc1..16cc2617df4 100644
--- a/Build/source/libs/libpng/libpng-src/CMakeLists.txt
+++ b/Build/source/libs/libpng/libpng-src/CMakeLists.txt
@@ -19,7 +19,7 @@ cmake_minimum_required(VERSION 3.6)
set(PNGLIB_MAJOR 1)
set(PNGLIB_MINOR 6)
-set(PNGLIB_REVISION 43)
+set(PNGLIB_REVISION 44)
set(PNGLIB_SUBREVISION 0)
#set(PNGLIB_SUBREVISION "git")
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_REVISION})
@@ -90,6 +90,21 @@ endif()
option(PNG_DEBUG "Enable debug output" OFF)
option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON)
+# Initialize and show the target architecture variable PNG_TARGET_ARCHITECTURE.
+#
+# NOTE:
+# On macOS, CMake sets CMAKE_SYSTEM_PROCESSOR to either "x86_64" or "arm64",
+# based upon the OS architecture, not the target architecture. As such, we need
+# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to
+# enable. Note that this will fail if you attempt to build a universal binary
+# in a single CMake invocation.
+if (APPLE AND CMAKE_OSX_ARCHITECTURES)
+ string(TOLOWER "${CMAKE_OSX_ARCHITECTURES}" PNG_TARGET_ARCHITECTURE)
+else()
+ string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" PNG_TARGET_ARCHITECTURE)
+endif()
+message(STATUS "Building for target architecture: ${PNG_TARGET_ARCHITECTURE}")
+
# Allow the users to specify a custom location of zlib.
# This option is deprecated, and no longer needed with CMake 3.12 and newer.
# Under the CMake policy CMP0074, if zlib is being built alongside libpng as a
@@ -119,22 +134,11 @@ else()
# libm is not available or not needed.
endif()
-# CMake currently sets CMAKE_SYSTEM_PROCESSOR to one of x86_64 or arm64 on macOS,
-# based upon the OS architecture, not the target architecture. As such, we need
-# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to
-# enable. Note that this will fail if you attempt to build a universal binary in
-# a single CMake invocation.
-if (APPLE AND CMAKE_OSX_ARCHITECTURES)
- set(TARGET_ARCH ${CMAKE_OSX_ARCHITECTURES})
-else()
- set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
-endif()
-
if(PNG_HARDWARE_OPTIMIZATIONS)
# Set definitions and sources for ARM.
-if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)")
- if(TARGET_ARCH MATCHES "^(ARM64|arm64|aarch64)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)")
+ if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm64|aarch64)")
set(PNG_ARM_NEON_POSSIBLE_VALUES on off)
set(PNG_ARM_NEON "on"
CACHE STRING "Enable ARM NEON optimizations: on|off; on is default")
@@ -153,9 +157,6 @@ if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)")
arm/arm_init.c
arm/filter_neon_intrinsics.c
arm/palette_neon_intrinsics.c)
- if(NOT MSVC)
- list(APPEND libpng_arm_sources arm/filter_neon.S)
- endif()
if(PNG_ARM_NEON STREQUAL "on")
add_definitions(-DPNG_ARM_NEON_OPT=2)
elseif(PNG_ARM_NEON STREQUAL "check")
@@ -167,7 +168,7 @@ if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)")
endif()
# Set definitions and sources for PowerPC.
-if(TARGET_ARCH MATCHES "^(powerpc|ppc64)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)")
set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
set(PNG_POWERPC_VSX "on"
CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default")
@@ -189,7 +190,7 @@ if(TARGET_ARCH MATCHES "^(powerpc|ppc64)")
endif()
# Set definitions and sources for Intel.
-if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)")
set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
set(PNG_INTEL_SSE "on"
CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default")
@@ -211,7 +212,7 @@ if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)")
endif()
# Set definitions and sources for MIPS.
-if(TARGET_ARCH MATCHES "^(mipsel|mips64el)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)")
set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
set(PNG_MIPS_MSA "on"
CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default")
@@ -258,7 +259,7 @@ if(TARGET_ARCH MATCHES "^(mipsel|mips64el)")
endif()
# Set definitions and sources for LoongArch.
-if(TARGET_ARCH MATCHES "^(loongarch)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)")
include(CheckCCompilerFlag)
set(PNG_LOONGARCH_LSX_POSSIBLE_VALUES on off)
set(PNG_LOONGARCH_LSX "on"
@@ -289,27 +290,27 @@ endif()
else(PNG_HARDWARE_OPTIMIZATIONS)
# Set definitions and sources for ARM.
-if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)")
add_definitions(-DPNG_ARM_NEON_OPT=0)
endif()
# Set definitions and sources for PowerPC.
-if(TARGET_ARCH MATCHES "^(powerpc|ppc64)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)")
add_definitions(-DPNG_POWERPC_VSX_OPT=0)
endif()
# Set definitions and sources for Intel.
-if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)")
add_definitions(-DPNG_INTEL_SSE_OPT=0)
endif()
# Set definitions and sources for MIPS.
-if(TARGET_ARCH MATCHES "^(mipsel|mips64el)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)")
add_definitions(-DPNG_MIPS_MSA_OPT=0)
endif()
# Set definitions and sources for LoongArch.
-if(TARGET_ARCH MATCHES "^(loongarch)")
+if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)")
add_definitions(-DPNG_LOONGARCH_LSX_OPT=0)
endif()
@@ -362,8 +363,6 @@ else()
message(STATUS "Could not find an AWK-compatible program")
endif()
-include_directories(${CMAKE_CURRENT_BINARY_DIR})
-
if(NOT AWK OR ANDROID OR IOS)
# No awk available to generate sources; use pre-built pnglibconf.h
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt
@@ -714,6 +713,8 @@ if(PNG_SHARED)
endif()
target_include_directories(png_shared
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
+ target_include_directories(png_shared
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
target_include_directories(png_shared SYSTEM
INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>)
target_link_libraries(png_shared PUBLIC ZLIB::ZLIB ${M_LIBRARY})
@@ -728,6 +729,8 @@ if(PNG_STATIC)
DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}")
target_include_directories(png_static
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
+ target_include_directories(png_static
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
target_include_directories(png_static SYSTEM
INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>)
target_link_libraries(png_static PUBLIC ZLIB::ZLIB ${M_LIBRARY})
@@ -757,6 +760,8 @@ if(PNG_FRAMEWORK)
set_target_properties(png_framework PROPERTIES DEFINE_SYMBOL "")
target_include_directories(png_framework
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
+ target_include_directories(png_framework
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
target_include_directories(png_framework SYSTEM
INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>)
target_link_libraries(png_framework PUBLIC ZLIB::ZLIB ${M_LIBRARY})
@@ -1128,6 +1133,30 @@ if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL)
FILE libpng${PNGLIB_ABI_VERSION}.cmake)
endif()
+# Create a CMake Config File that can be used via find_package(PNG CONFIG)
+if(NOT SKIP_INSTALL_CONFIG_FILE AND NOT SKIP_INSTALL_ALL)
+ install(TARGETS ${PNG_LIBRARY_TARGETS}
+ EXPORT PNGTargets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+ include(CMakePackageConfigHelpers)
+ write_basic_package_version_file(PNGConfigVersion.cmake
+ VERSION ${PNGLIB_VERSION}
+ COMPATIBILITY SameMinorVersion)
+
+ install(EXPORT PNGTargets
+ FILE PNGTargets.cmake
+ NAMESPACE PNG::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG)
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/PNGConfigVersion.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG)
+endif()
+
# TODO: Create MSVC import lib for MinGW-compiled shared lib.
# pexports libpng.dll > libpng.def
# lib /def:libpng.def /machine:x86
diff --git a/Build/source/libs/libpng/libpng-src/Makefile.am b/Build/source/libs/libpng/libpng-src/Makefile.am
index 1f06c703a18..eed986c2b8d 100644
--- a/Build/source/libs/libpng/libpng-src/Makefile.am
+++ b/Build/source/libs/libpng/libpng-src/Makefile.am
@@ -108,7 +108,7 @@ libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = png.c pngerror.c\
if PNG_ARM_NEON
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES += arm/arm_init.c\
- arm/filter_neon.S arm/filter_neon_intrinsics.c \
+ arm/filter_neon_intrinsics.c \
arm/palette_neon_intrinsics.c
endif
diff --git a/Build/source/libs/libpng/libpng-src/README b/Build/source/libs/libpng/libpng-src/README
index a6ca3ae9f94..3af606889b9 100644
--- a/Build/source/libs/libpng/libpng-src/README
+++ b/Build/source/libs/libpng/libpng-src/README
@@ -1,4 +1,4 @@
-README for libpng version 1.6.43
+README for libpng version 1.6.44
================================
See the note about version numbers near the top of `png.h`.
diff --git a/Build/source/libs/libpng/libpng-src/arm/filter_neon.S b/Build/source/libs/libpng/libpng-src/arm/filter_neon.S
index 2308aad13e6..fc3c7a29645 100644
--- a/Build/source/libs/libpng/libpng-src/arm/filter_neon.S
+++ b/Build/source/libs/libpng/libpng-src/arm/filter_neon.S
@@ -1,253 +1,61 @@
-/* filter_neon.S - NEON optimised filter functions
+/* filter_neon.S - placeholder file
*
- * Copyright (c) 2018 Cosmin Truta
- * Copyright (c) 2014,2017 Glenn Randers-Pehrson
- * Written by Mans Rullgard, 2011.
+ * Copyright (c) 2024 Cosmin Truta
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*/
+/* IMPORTANT NOTE:
+ *
+ * Historically, the hand-coded assembler implementation of Neon optimizations
+ * in this module had not been in sync with the intrinsics-based implementation
+ * in filter_neon_intrinsics.c and palette_neon_intrinsics.c, at least since
+ * the introduction of riffled palette optimizations. Moreover, the assembler
+ * code used to work on 32-bit ARM only, and it caused problems, even if empty,
+ * on 64-bit ARM.
+ *
+ * All references to this module from our internal build scripts and projects
+ * have been removed.
+ *
+ * For the external projects that might still expect this module to be present,
+ * we leave this stub in place, for the remaining lifetime of libpng-1.6.x.
+ * Everything should continue to function normally, as long as there are no
+ * deliberate attempts to use the old hand-made assembler code. A build error
+ * will be raised otherwise.
+ */
+
/* This is required to get the symbol renames, which are #defines, and the
* definitions (or not) of PNG_ARM_NEON_OPT and PNG_ARM_NEON_IMPLEMENTATION.
*/
#define PNG_VERSION_INFO_ONLY
#include "../pngpriv.h"
-#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__)
-.section .note.GNU-stack,"",%progbits /* mark stack as non-executable */
-#endif
-
#ifdef PNG_READ_SUPPORTED
-
-/* Assembler NEON support - only works for 32-bit ARM (i.e. it does not work for
- * ARM64). The code in arm/filter_neon_intrinsics.c supports ARM64, however it
- * only works if -mfpu=neon is specified on the GCC command line. See pngpriv.h
- * for the logic which sets PNG_USE_ARM_NEON_ASM:
- */
#if PNG_ARM_NEON_IMPLEMENTATION == 2 /* hand-coded assembler */
-
#if PNG_ARM_NEON_OPT > 0
-#ifdef __ELF__
-# define ELF
+#if defined(__clang__)
+#define GNUC_VERSION 0 /* not gcc, although it might pretend to be */
+#elif defined(__GNUC__)
+#define GNUC_MAJOR (__GNUC__ + 0)
+#define GNUC_MINOR (__GNUC_MINOR__ + 0)
+#define GNUC_PATCHLEVEL (__GNUC_PATCHLEVEL__ + 0)
+#define GNUC_VERSION (GNUC_MAJOR * 10000 + GNUC_MINOR * 100 + GNUC_PATCHLEVEL)
#else
-# define ELF @
+#define GNUC_VERSION 0 /* not gcc */
#endif
- .arch armv7-a
- .fpu neon
-
-.macro func name, export=0
- .macro endfunc
-ELF .size \name, . - \name
- .endfunc
- .purgem endfunc
- .endm
- .text
-
- /* Explicitly specifying alignment here because some versions of
- * GAS don't align code correctly. This is harmless in correctly
- * written versions of GAS.
- */
- .align 2
-
- .if \export
- .global \name
- .endif
-ELF .type \name, STT_FUNC
- .func \name
-\name:
-.endm
-
-func png_read_filter_row_sub4_neon, export=1
- ldr r3, [r0, #4] @ rowbytes
- vmov.i8 d3, #0
-1:
- vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128]
- vadd.u8 d0, d3, d4
- vadd.u8 d1, d0, d5
- vadd.u8 d2, d1, d6
- vadd.u8 d3, d2, d7
- vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]!
- subs r3, r3, #16
- bgt 1b
-
- bx lr
-endfunc
-
-func png_read_filter_row_sub3_neon, export=1
- ldr r3, [r0, #4] @ rowbytes
- vmov.i8 d3, #0
- mov r0, r1
- mov r2, #3
- mov r12, #12
- vld1.8 {q11}, [r0], r12
-1:
- vext.8 d5, d22, d23, #3
- vadd.u8 d0, d3, d22
- vext.8 d6, d22, d23, #6
- vadd.u8 d1, d0, d5
- vext.8 d7, d23, d23, #1
- vld1.8 {q11}, [r0], r12
- vst1.32 {d0[0]}, [r1,:32], r2
- vadd.u8 d2, d1, d6
- vst1.32 {d1[0]}, [r1], r2
- vadd.u8 d3, d2, d7
- vst1.32 {d2[0]}, [r1], r2
- vst1.32 {d3[0]}, [r1], r2
- subs r3, r3, #12
- bgt 1b
-
- bx lr
-endfunc
-
-func png_read_filter_row_up_neon, export=1
- ldr r3, [r0, #4] @ rowbytes
-1:
- vld1.8 {q0}, [r1,:128]
- vld1.8 {q1}, [r2,:128]!
- vadd.u8 q0, q0, q1
- vst1.8 {q0}, [r1,:128]!
- subs r3, r3, #16
- bgt 1b
-
- bx lr
-endfunc
-
-func png_read_filter_row_avg4_neon, export=1
- ldr r12, [r0, #4] @ rowbytes
- vmov.i8 d3, #0
-1:
- vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128]
- vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]!
- vhadd.u8 d0, d3, d16
- vadd.u8 d0, d0, d4
- vhadd.u8 d1, d0, d17
- vadd.u8 d1, d1, d5
- vhadd.u8 d2, d1, d18
- vadd.u8 d2, d2, d6
- vhadd.u8 d3, d2, d19
- vadd.u8 d3, d3, d7
- vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]!
- subs r12, r12, #16
- bgt 1b
-
- bx lr
-endfunc
-
-func png_read_filter_row_avg3_neon, export=1
- push {r4,lr}
- ldr r12, [r0, #4] @ rowbytes
- vmov.i8 d3, #0
- mov r0, r1
- mov r4, #3
- mov lr, #12
- vld1.8 {q11}, [r0], lr
-1:
- vld1.8 {q10}, [r2], lr
- vext.8 d5, d22, d23, #3
- vhadd.u8 d0, d3, d20
- vext.8 d17, d20, d21, #3
- vadd.u8 d0, d0, d22
- vext.8 d6, d22, d23, #6
- vhadd.u8 d1, d0, d17
- vext.8 d18, d20, d21, #6
- vadd.u8 d1, d1, d5
- vext.8 d7, d23, d23, #1
- vld1.8 {q11}, [r0], lr
- vst1.32 {d0[0]}, [r1,:32], r4
- vhadd.u8 d2, d1, d18
- vst1.32 {d1[0]}, [r1], r4
- vext.8 d19, d21, d21, #1
- vadd.u8 d2, d2, d6
- vhadd.u8 d3, d2, d19
- vst1.32 {d2[0]}, [r1], r4
- vadd.u8 d3, d3, d7
- vst1.32 {d3[0]}, [r1], r4
- subs r12, r12, #12
- bgt 1b
-
- pop {r4,pc}
-endfunc
-
-.macro paeth rx, ra, rb, rc
- vaddl.u8 q12, \ra, \rb @ a + b
- vaddl.u8 q15, \rc, \rc @ 2*c
- vabdl.u8 q13, \rb, \rc @ pa
- vabdl.u8 q14, \ra, \rc @ pb
- vabd.u16 q15, q12, q15 @ pc
- vcle.u16 q12, q13, q14 @ pa <= pb
- vcle.u16 q13, q13, q15 @ pa <= pc
- vcle.u16 q14, q14, q15 @ pb <= pc
- vand q12, q12, q13 @ pa <= pb && pa <= pc
- vmovn.u16 d28, q14
- vmovn.u16 \rx, q12
- vbsl d28, \rb, \rc
- vbsl \rx, \ra, d28
-.endm
-
-func png_read_filter_row_paeth4_neon, export=1
- ldr r12, [r0, #4] @ rowbytes
- vmov.i8 d3, #0
- vmov.i8 d20, #0
-1:
- vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128]
- vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]!
- paeth d0, d3, d16, d20
- vadd.u8 d0, d0, d4
- paeth d1, d0, d17, d16
- vadd.u8 d1, d1, d5
- paeth d2, d1, d18, d17
- vadd.u8 d2, d2, d6
- paeth d3, d2, d19, d18
- vmov d20, d19
- vadd.u8 d3, d3, d7
- vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]!
- subs r12, r12, #16
- bgt 1b
-
- bx lr
-endfunc
-
-func png_read_filter_row_paeth3_neon, export=1
- push {r4,lr}
- ldr r12, [r0, #4] @ rowbytes
- vmov.i8 d3, #0
- vmov.i8 d4, #0
- mov r0, r1
- mov r4, #3
- mov lr, #12
- vld1.8 {q11}, [r0], lr
-1:
- vld1.8 {q10}, [r2], lr
- paeth d0, d3, d20, d4
- vext.8 d5, d22, d23, #3
- vadd.u8 d0, d0, d22
- vext.8 d17, d20, d21, #3
- paeth d1, d0, d17, d20
- vst1.32 {d0[0]}, [r1,:32], r4
- vext.8 d6, d22, d23, #6
- vadd.u8 d1, d1, d5
- vext.8 d18, d20, d21, #6
- paeth d2, d1, d18, d17
- vext.8 d7, d23, d23, #1
- vld1.8 {q11}, [r0], lr
- vst1.32 {d1[0]}, [r1], r4
- vadd.u8 d2, d2, d6
- vext.8 d19, d21, d21, #1
- paeth d3, d2, d19, d18
- vst1.32 {d2[0]}, [r1], r4
- vmov d4, d19
- vadd.u8 d3, d3, d7
- vst1.32 {d3[0]}, [r1], r4
- subs r12, r12, #12
- bgt 1b
+#if (GNUC_VERSION > 0) && (GNUC_VERSION < 40300)
+#error "PNG_ARM_NEON is not supported with gcc versions earlier than 4.3.0"
+#elif GNUC_VERSION == 40504
+#error "PNG_ARM_NEON is not supported with gcc version 4.5.4"
+#else
+#error "Please use 'arm/*_neon_intrinsics.c' for PNG_ARM_NEON support"
+#endif
- pop {r4,pc}
-endfunc
#endif /* PNG_ARM_NEON_OPT > 0 */
-#endif /* PNG_ARM_NEON_IMPLEMENTATION == 2 (assembler) */
+#endif /* PNG_ARM_NEON_IMPLEMENTATION == 2 */
#endif /* READ */
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.aarch64-linux-android.sh b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.aarch64-linux-android.sh
new file mode 100644
index 00000000000..fef0ef138fa
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.aarch64-linux-android.sh
@@ -0,0 +1,16 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=aarch64
+export CI_TARGET_ARCHVER=aarch64
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=android
+export CI_TARGET_ABIVER=android29
+
+export CI_CC="$CI_TARGET_ARCHVER-$CI_TARGET_SYSTEM-$CI_TARGET_ABIVER-clang"
+export CI_AR="llvm-ar"
+export CI_RANLIB="llvm-ranlib"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.armv7a-linux-androideabi.sh b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.armv7a-linux-androideabi.sh
new file mode 100644
index 00000000000..c27bd121ebc
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.armv7a-linux-androideabi.sh
@@ -0,0 +1,16 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=arm
+export CI_TARGET_ARCHVER=armv7a
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=androideabi
+export CI_TARGET_ABIVER=androideabi29
+
+export CI_CC="$CI_TARGET_ARCHVER-$CI_TARGET_SYSTEM-$CI_TARGET_ABIVER-clang"
+export CI_AR="llvm-ar"
+export CI_RANLIB="llvm-ranlib"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.i686-linux-android.sh b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.i686-linux-android.sh
new file mode 100644
index 00000000000..88e36908241
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.i686-linux-android.sh
@@ -0,0 +1,16 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i686
+export CI_TARGET_ARCHVER=i686
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=android
+export CI_TARGET_ABIVER=android29
+
+export CI_CC="$CI_TARGET_ARCHVER-$CI_TARGET_SYSTEM-$CI_TARGET_ABIVER-clang"
+export CI_AR="llvm-ar"
+export CI_RANLIB="llvm-ranlib"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.x86_64-linux-android.sh b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.x86_64-linux-android.sh
new file mode 100644
index 00000000000..87460c88853
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.x86_64-linux-android.sh
@@ -0,0 +1,16 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=x86_64
+export CI_TARGET_ARCHVER=x86_64
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=android
+export CI_TARGET_ABIVER=android29
+
+export CI_CC="$CI_TARGET_ARCHVER-$CI_TARGET_SYSTEM-$CI_TARGET_ABIVER-clang"
+export CI_AR="llvm-ar"
+export CI_RANLIB="llvm-ranlib"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.i686-pc-cygwin.sh b/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.i686-pc-cygwin.sh
new file mode 100644
index 00000000000..66b99997b9a
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.i686-pc-cygwin.sh
@@ -0,0 +1,18 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i686
+export CI_TARGET_SYSTEM=cygwin
+
+export CI_CC="$CI_TARGET_ARCH-pc-$CI_TARGET_SYSTEM-gcc"
+export CI_AR="$CI_CC-ar"
+export CI_RANLIB="$CI_CC-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=CYGWIN
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.x86_64-pc-cygwin.sh b/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.x86_64-pc-cygwin.sh
new file mode 100644
index 00000000000..78f8c25ff8d
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.x86_64-pc-cygwin.sh
@@ -0,0 +1,18 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=x86_64
+export CI_TARGET_SYSTEM=cygwin
+
+export CI_CC="$CI_TARGET_ARCH-pc-$CI_TARGET_SYSTEM-gcc"
+export CI_AR="$CI_CC-ar"
+export CI_RANLIB="$CI_CC-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=CYGWIN
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.arm64-apple-darwin.sh b/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.arm64-apple-darwin.sh
new file mode 100644
index 00000000000..c54d8c7605f
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.arm64-apple-darwin.sh
@@ -0,0 +1,15 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=arm64
+export CI_TARGET_SYSTEM=darwin
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Darwin
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+ -DCMAKE_OSX_ARCHITECTURES=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.x86_64-apple-darwin.sh b/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.x86_64-apple-darwin.sh
new file mode 100644
index 00000000000..ee87711d547
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.x86_64-apple-darwin.sh
@@ -0,0 +1,15 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=x86_64
+export CI_TARGET_SYSTEM=darwin
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Darwin
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+ -DCMAKE_OSX_ARCHITECTURES=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.aarch64-unknown-freebsd.sh b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.aarch64-unknown-freebsd.sh
new file mode 100644
index 00000000000..42235de7d0d
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.aarch64-unknown-freebsd.sh
@@ -0,0 +1,14 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=aarch64
+export CI_TARGET_SYSTEM=freebsd
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=FreeBSD
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.i686-unknown-freebsd.sh b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.i686-unknown-freebsd.sh
new file mode 100644
index 00000000000..3d188f8da19
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.i686-unknown-freebsd.sh
@@ -0,0 +1,14 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i686
+export CI_TARGET_SYSTEM=freebsd
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=FreeBSD
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.riscv64-unknown-freebsd.sh b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.riscv64-unknown-freebsd.sh
new file mode 100644
index 00000000000..0a02cde4f60
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.riscv64-unknown-freebsd.sh
@@ -0,0 +1,14 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=riscv64
+export CI_TARGET_SYSTEM=freebsd
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=FreeBSD
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.x86_64-unknown-freebsd.sh b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.x86_64-unknown-freebsd.sh
new file mode 100644
index 00000000000..c77ace53bae
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.x86_64-unknown-freebsd.sh
@@ -0,0 +1,14 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=x86_64
+export CI_TARGET_SYSTEM=freebsd
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=FreeBSD
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.aarch64-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.aarch64-linux-gnu.sh
new file mode 100644
index 00000000000..cb85bc6d8bd
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.aarch64-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=aarch64
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabi.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabi.sh
new file mode 100644
index 00000000000..45504dfcd58
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabi.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=arm
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnueabi
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabihf.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabihf.sh
new file mode 100644
index 00000000000..3eb9d1892d2
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabihf.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=arm
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnueabihf
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.i686-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.i686-linux-gnu.sh
new file mode 100644
index 00000000000..a5efd9f7fec
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.i686-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i686
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips-linux-gnu.sh
new file mode 100644
index 00000000000..532c93c04c7
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=mips
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64-linux-gnuabi64.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64-linux-gnuabi64.sh
new file mode 100644
index 00000000000..348d2b80065
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64-linux-gnuabi64.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=mips64
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnuabi64
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64el-linux-gnuabi64.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64el-linux-gnuabi64.sh
new file mode 100644
index 00000000000..e264913d8e2
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64el-linux-gnuabi64.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=mips64el
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnuabi64
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsel-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsel-linux-gnu.sh
new file mode 100644
index 00000000000..f99050f10e1
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsel-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=mipsel
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6-linux-gnu.sh
new file mode 100644
index 00000000000..0a32867f632
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=mipsisa32r6
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6el-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6el-linux-gnu.sh
new file mode 100644
index 00000000000..ca060093002
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6el-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=mipsisa32r6el
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6-linux-gnuabi64.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6-linux-gnuabi64.sh
new file mode 100644
index 00000000000..6c1138fe62c
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6-linux-gnuabi64.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=mipsisa64r6
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnuabi64
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6el-linux-gnuabi64.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6el-linux-gnuabi64.sh
new file mode 100644
index 00000000000..f64f2fcf442
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6el-linux-gnuabi64.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=mipsisa64r6el
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnuabi64
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc-linux-gnu.sh
new file mode 100644
index 00000000000..e50d9b502a3
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=powerpc
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64-linux-gnu.sh
new file mode 100644
index 00000000000..15e60adf27e
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=powerpc64
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64le-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64le-linux-gnu.sh
new file mode 100644
index 00000000000..be0e2ca69cc
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64le-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=powerpc64le
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.riscv64-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.riscv64-linux-gnu.sh
new file mode 100644
index 00000000000..d8518d97fec
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.riscv64-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=riscv64
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.x86_64-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.x86_64-linux-gnu.sh
new file mode 100644
index 00000000000..3263fbff8ab
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.x86_64-linux-gnu.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=x86_64
+export CI_TARGET_SYSTEM=linux
+export CI_TARGET_ABI=gnu
+
+export CI_GCC="${CI_GCC-gcc}"
+
+export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC"
+export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar"
+export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Linux
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i386-pc-msdoswatcom.sh b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i386-pc-msdoswatcom.sh
new file mode 100644
index 00000000000..59f3bd58fd1
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i386-pc-msdoswatcom.sh
@@ -0,0 +1,18 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i386
+export CI_TARGET_SYSTEM=msdoswatcom
+
+export CI_CC="wcl386"
+
+# Open Watcom V2 CMake build
+# https://github.com/open-watcom/open-watcom-v2/discussions/716
+export CI_CMAKE_GENERATOR="Watcom WMake"
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=DOS
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i586-pc-msdosdjgpp.sh b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i586-pc-msdosdjgpp.sh
new file mode 100644
index 00000000000..63e6d067670
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i586-pc-msdosdjgpp.sh
@@ -0,0 +1,18 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i586
+export CI_TARGET_SYSTEM=msdosdjgpp
+
+export CI_CC="$CI_TARGET_ARCH-pc-$CI_TARGET_SYSTEM-gcc"
+export CI_AR="$CI_CC-ar"
+export CI_RANLIB="$CI_CC-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Generic
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i86-pc-msdoswatcom.sh b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i86-pc-msdoswatcom.sh
new file mode 100644
index 00000000000..3059f183566
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i86-pc-msdoswatcom.sh
@@ -0,0 +1,19 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i86
+export CI_TARGET_SYSTEM=msdoswatcom
+
+export CI_CC="wcl"
+
+# Open Watcom V2 CMake build
+# https://github.com/open-watcom/open-watcom-v2/discussions/716
+export CI_CMAKE_GENERATOR="Watcom WMake"
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=DOS
+ -DCMAKE_SYSTEM_PROCESSOR=I86
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.aarch64-windows-llvm.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.aarch64-windows-llvm.sh
new file mode 100644
index 00000000000..80244172a34
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.aarch64-windows-llvm.sh
@@ -0,0 +1,18 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=aarch64
+export CI_TARGET_SYSTEM=windows
+
+export CI_CC="clang"
+export CI_AR="llvm-ar"
+export CI_RANLIB="llvm-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Windows
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-w64-mingw32.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-w64-mingw32.sh
new file mode 100644
index 00000000000..8c83d0f2c64
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-w64-mingw32.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i686
+export CI_TARGET_SYSTEM=mingw32
+
+# The output of `uname -s` on MSYS2 is understandable, and so is
+# CI_TARGET_SYSTEM above, in simplified form. (See also Cygwin.)
+# But aside from that, the Mingw-w64 nomenclature is rather messy.
+export CI_CC="$CI_TARGET_ARCH-w64-mingw32-gcc"
+export CI_AR="$CI_CC-ar"
+export CI_RANLIB="$CI_CC-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Windows
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-windows-llvm.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-windows-llvm.sh
new file mode 100644
index 00000000000..3d29f6d558e
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-windows-llvm.sh
@@ -0,0 +1,18 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=i686
+export CI_TARGET_SYSTEM=windows
+
+export CI_CC="clang"
+export CI_AR="llvm-ar"
+export CI_RANLIB="llvm-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Windows
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-w64-mingw32.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-w64-mingw32.sh
new file mode 100644
index 00000000000..67d83557bde
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-w64-mingw32.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=x86_64
+export CI_TARGET_SYSTEM=mingw64
+
+# The output of `uname -s` on MSYS2 is understandable, and so is
+# CI_TARGET_SYSTEM above, in simplified form. (See also Cygwin.)
+# But aside from that, the Mingw-w64 nomenclature is rather messy.
+export CI_CC="$CI_TARGET_ARCH-w64-mingw32-gcc"
+export CI_AR="$CI_CC-ar"
+export CI_RANLIB="$CI_CC-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Windows
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-windows-llvm.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-windows-llvm.sh
new file mode 100644
index 00000000000..747f99b2148
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-windows-llvm.sh
@@ -0,0 +1,18 @@
+# Copyright (c) 2023-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+export CI_TARGET_ARCH=x86_64
+export CI_TARGET_SYSTEM=windows
+
+export CI_CC="clang"
+export CI_AR="llvm-ar"
+export CI_RANLIB="llvm-ranlib"
+
+export CI_CMAKE_VARS="
+ -DCMAKE_SYSTEM_NAME=Windows
+ -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH
+"
diff --git a/Build/source/libs/libpng/libpng-src/configure.ac b/Build/source/libs/libpng/libpng-src/configure.ac
index 505d72ff60d..22113b265c7 100644
--- a/Build/source/libs/libpng/libpng-src/configure.ac
+++ b/Build/source/libs/libpng/libpng-src/configure.ac
@@ -25,7 +25,7 @@ AC_PREREQ([2.68])
dnl Version number stuff here:
-AC_INIT([libpng],[1.6.43],[png-mng-implement@lists.sourceforge.net])
+AC_INIT([libpng],[1.6.44],[png-mng-implement@lists.sourceforge.net])
AC_CONFIG_MACRO_DIR([scripts/autoconf])
# libpng does not follow GNU file name conventions (hence 'foreign')
@@ -46,17 +46,17 @@ dnl automake, so the following is not necessary (and is not defined anyway):
dnl AM_PREREQ([1.11.2])
dnl stop configure from automagically running automake
-PNGLIB_VERSION=1.6.43
+PNGLIB_VERSION=1.6.44
PNGLIB_MAJOR=1
PNGLIB_MINOR=6
-PNGLIB_RELEASE=43
+PNGLIB_RELEASE=44
dnl End of version number stuff
AC_CONFIG_SRCDIR([pngget.c])
AC_CONFIG_HEADERS([config.h])
-# Check for basic programs.
+# Check the basic programs.
AC_LANG([C])
AC_PROG_CC
AM_PROG_AS
diff --git a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile
index f5bc1a985d3..c9bc4145e06 100644
--- a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile
+++ b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile
@@ -1,3 +1,5 @@
+# Copyright 2024 Cosmin Truta
+# Copyright 2017 Glenn Randers-Pehrson
# Copyright 2016 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,11 +17,12 @@
################################################################################
FROM gcr.io/oss-fuzz-base/base-builder
-MAINTAINER glennrp@gmail.com
+
RUN apt-get update && \
- apt-get install -y make autoconf automake libtool
+ apt-get install -y make autoconf automake libtool zlib1g-dev
+
+RUN git clone --depth=1 https://github.com/pnggroup/libpng.git && \
+ git clone --depth=1 https://github.com/madler/zlib.git && \
+ cp libpng/contrib/oss-fuzz/build.sh $SRC
-RUN git clone --depth 1 https://github.com/madler/zlib.git
-RUN git clone --depth 1 https://github.com/glennrp/libpng.git
-RUN cp libpng/contrib/oss-fuzz/build.sh $SRC
-WORKDIR libpng
+WORKDIR /home/libpng
diff --git a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt
index 66d5242c574..b01af52accc 100644
--- a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt
+++ b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt
@@ -1,3 +1,7 @@
+libpng additions to oss-fuzz
+============================
+
+Copyright (c) 2024 Cosmin Truta
Copyright (c) 2017 Glenn Randers-Pehrson
This code is released under the libpng license.
diff --git a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh
index 7b8f0263972..1970f9c06c5 100755
--- a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh
+++ b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh
@@ -1,6 +1,8 @@
-#!/bin/bash -eu
+#!/usr/bin/env bash
+set -eu
-# Copyright 2017-2018 Glenn Randers-Pehrson
+# Copyright 2024 Cosmin Truta
+# Copyright 2017 Glenn Randers-Pehrson
# Copyright 2016 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,36 +17,31 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# Revisions by Glenn Randers-Pehrson, 2017:
-# 1. Build only the library, not the tools (changed "make -j$(nproc) all" to
-# "make -j$(nproc) libpng16.la").
-# 2. Disabled WARNING and WRITE options in pnglibconf.dfa.
-# 3. Build zlib alongside libpng
################################################################################
# Disable logging via library build configuration control.
-cat scripts/pnglibconf.dfa | \
- sed -e "s/option STDIO/option STDIO disabled/" \
- -e "s/option WARNING /option WARNING disabled/" \
- -e "s/option WRITE enables WRITE_INT_FUNCTIONS/option WRITE disabled/" \
-> scripts/pnglibconf.dfa.temp
-mv scripts/pnglibconf.dfa.temp scripts/pnglibconf.dfa
+sed -e "s/option STDIO/option STDIO disabled/" \
+ -e "s/option WARNING /option WARNING disabled/" \
+ -e "s/option WRITE enables WRITE_INT_FUNCTIONS/option WRITE disabled/" \
+ scripts/pnglibconf.dfa >scripts/pnglibconf.dfa.tmp
+mv -f scripts/pnglibconf.dfa.tmp scripts/pnglibconf.dfa
-# build the libpng library.
+# Build the libpng library ("libpng16.la"), excluding the auxiliary tools.
autoreconf -f -i
./configure --with-libpng-prefix=OSS_FUZZ_
make -j$(nproc) clean
make -j$(nproc) libpng16.la
-# build libpng_read_fuzzer.
+# Build libpng_read_fuzzer.
$CXX $CXXFLAGS -std=c++11 -I. \
$SRC/libpng/contrib/oss-fuzz/libpng_read_fuzzer.cc \
-o $OUT/libpng_read_fuzzer \
-lFuzzingEngine .libs/libpng16.a -lz
-# add seed corpus.
+# Add seed corpus.
find $SRC/libpng -name "*.png" | grep -v crashers | \
xargs zip $OUT/libpng_read_fuzzer_seed_corpus.zip
cp $SRC/libpng/contrib/oss-fuzz/*.dict \
- $SRC/libpng/contrib/oss-fuzz/*.options $OUT/
+ $SRC/libpng/contrib/oss-fuzz/*.options \
+ $OUT/
diff --git a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc
index 0190cf7865d..ad9f9adc6a3 100644
--- a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc
+++ b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc
@@ -204,5 +204,21 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
png_read_end(png_handler.png_ptr, png_handler.end_info_ptr);
PNG_CLEANUP
+
+#ifdef PNG_SIMPLIFIED_READ_SUPPORTED
+ // Simplified READ API
+ png_image image;
+ memset(&image, 0, (sizeof image));
+ image.version = PNG_IMAGE_VERSION;
+
+ if (!png_image_begin_read_from_memory(&image, data, size)) {
+ return 0;
+ }
+
+ image.format = PNG_FORMAT_RGBA;
+ std::vector<png_byte> buffer(PNG_IMAGE_SIZE(image));
+ png_image_finish_read(&image, NULL, buffer.data(), 0, NULL);
+#endif
+
return 0;
}
diff --git a/Build/source/libs/libpng/libpng-src/contrib/tools/chkfmt.sh b/Build/source/libs/libpng/libpng-src/contrib/tools/chkfmt.sh
deleted file mode 100644
index 8810aa7b5db..00000000000
--- a/Build/source/libs/libpng/libpng-src/contrib/tools/chkfmt.sh
+++ /dev/null
@@ -1,157 +0,0 @@
-#!/bin/sh
-
-# chkfmt.sh
-#
-# COPYRIGHT:
-# Written by John Cunningham Bowler, 2010.
-# Revised by Cosmin Truta, 2022.
-# To the extent possible under law, the author has waived all copyright and
-# related or neighboring rights to this work. The author published this work
-# from the United States.
-#
-# Check the format of the source files in the current directory:
-#
-# * The lines should not exceed a predefined maximum length.
-# * Tab characters should appear only where necessary (e.g. in makefiles).
-#
-# Optionally arguments are files or directories to check.
-#
-# -v: output the long lines (makes fixing them easier)
-# -e: spawn an editor for each file that needs a change ($EDITOR must be
-# defined). When using -e the script MUST be run from an interactive
-# command line.
-
-script_name=`basename "$0"`
-
-verbose=
-edit=
-vers=
-test "$1" = "-v" && {
- shift
- verbose=yes
-}
-test "$1" = "-e" && {
- shift
- if test -n "$EDITOR"
- then
- edit=yes
-
- # Copy the standard streams for the editor
- exec 3>&0 4>&1 5>&2
- else
- echo "$script_name -e: EDITOR must be defined" >&2
- exit 1
- fi
-}
-
-# Function to edit a single file - if the file isn't changed ask the user
-# whether or not to continue. This stuff only works if the script is run
-# from the command line (otherwise, don't specify -e or you will be sorry).
-doed(){
- cp "$file" "$file".orig
- "$EDITOR" "$file" 0>&3 1>&4 2>&5 3>&- 4>&- 5>&- || exit 1
- if cmp -s "$file".orig "$file"
- then
- rm "$file".orig
- echo -n "$file: file not changed, type anything to continue: " >&5
- read ans 0>&3
- test -n "$ans" || return 1
- fi
- return 0
-}
-
-# In beta versions, the version string which appears in files can be a little
-# long and cause spuriously overlong lines. To avoid this, substitute the
-# version string with a placeholder string "a.b.cc" before checking for long
-# lines.
-# (Starting from libpng version 1.6.36, we switched to a conventional Git
-# workflow, and we are no longer publishing beta versions.)
-if test -r png.h
-then
- vers="`sed -n -e \
- 's/^#define PNG_LIBPNG_VER_STRING .\([0-9]\.[0-9]\.[0-9][0-9a-z]*\).$/\1/p' \
- png.h`"
- echo "$script_name: checking version $vers"
-fi
-if test -z "$vers"
-then
- echo "$script_name: png.h not found, ignoring version number" >&2
-fi
-
-test -n "$1" || set -- .
-find "$@" \( -type d \( -name '.git' -o -name '.libs' -o -name 'projects' \) \
- -prune \) -o \( -type f \
- ! -name '*.[oa]' ! -name '*.l[oa]' ! -name '*.png' ! -name '*.out' \
- ! -name '*.jpg' ! -name '*.patch' ! -name '*.obj' ! -name '*.exe' \
- ! -name '*.com' ! -name '*.tar.*' ! -name '*.zip' ! -name '*.ico' \
- ! -name '*.res' ! -name '*.rc' ! -name '*.mms' ! -name '*.rej' \
- ! -name '*.dsp' ! -name '*.orig' ! -name '*.dfn' ! -name '*.swp' \
- ! -name '~*' ! -name '*.3' \
- ! -name 'missing' ! -name 'mkinstalldirs' ! -name 'depcomp' \
- ! -name 'aclocal.m4' ! -name 'install-sh' ! -name 'Makefile.in' \
- ! -name 'ltmain.sh' ! -name 'config*' -print \) | {
- st=0
- while read file
- do
- case "$file" in
- *.mak|*[Mm]akefile.*|*[Mm]akefile)
- # Makefiles require tabs, dependency lines can be this long.
- check_tabs=
- line_length=100;;
- *.awk)
- # Allow literal tabs.
- check_tabs=
- # Mainframe line printer, anyone?
- line_length=132;;
- */ci_*.sh)
- check_tabs=yes
- line_length=100;;
- *contrib/*/*.[ch])
- check_tabs=yes
- line_length=100;;
- *)
- check_tabs=yes
- line_length=80;;
- esac
-
- # Note that vers can only contain 0-9, . and a-z
- if test -n "$vers"
- then
- sed -e "s/$vers/a.b.cc/g" "$file" >"$file".$$
- else
- cp "$file" "$file".$$
- fi
- splt="`fold -$line_length "$file".$$ | diff -c "$file".$$ -`"
- rm "$file".$$
-
- if test -n "$splt"
- then
- echo "$file: lines too long"
- st=1
- if test -n "$EDITOR" -a -n "$edit"
- then
- doed "$file" || exit 1
- elif test -n "$verbose"
- then
- echo "$splt"
- fi
- fi
- if test -n "$check_tabs"
- then
- tab="`tr -c -d '\t' <"$file"`"
- if test -n "$tab"
- then
- echo "$file: file contains tab characters"
- st=1
- if test -n "$EDITOR" -a -n "$edit"
- then
- doed "$file" || exit 1
- elif test -n "$verbose"
- then
- echo "$splt"
- fi
- fi
- fi
- done
- exit $st
-}
diff --git a/Build/source/libs/libpng/libpng-src/libpng-manual.txt b/Build/source/libs/libpng/libpng-src/libpng-manual.txt
index 79880575994..2ce366d679f 100644
--- a/Build/source/libs/libpng/libpng-src/libpng-manual.txt
+++ b/Build/source/libs/libpng/libpng-src/libpng-manual.txt
@@ -9,7 +9,7 @@ libpng-manual.txt - A description on how to use and modify libpng
Based on:
- libpng version 1.6.36, December 2018, through 1.6.43 - February 2024
+ libpng version 1.6.36, December 2018, through 1.6.44 - September 2024
Updated and distributed by Cosmin Truta
Copyright (c) 2018-2024 Cosmin Truta
diff --git a/Build/source/libs/libpng/libpng-src/libpng.3 b/Build/source/libs/libpng/libpng-src/libpng.3
index 45e76e4837c..5a3c89cb9c9 100644
--- a/Build/source/libs/libpng/libpng-src/libpng.3
+++ b/Build/source/libs/libpng/libpng-src/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "February 23, 2024"
+.TH LIBPNG 3 "September 12, 2024"
.SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.6.43
+libpng \- Portable Network Graphics (PNG) Reference Library 1.6.44
.SH SYNOPSIS
\fB#include <png.h>\fP
@@ -528,7 +528,7 @@ libpng-manual.txt - A description on how to use and modify libpng
Based on:
- libpng version 1.6.36, December 2018, through 1.6.43 - February 2024
+ libpng version 1.6.36, December 2018, through 1.6.44 - September 2024
Updated and distributed by Cosmin Truta
Copyright (c) 2018-2024 Cosmin Truta
diff --git a/Build/source/libs/libpng/libpng-src/libpngpf.3 b/Build/source/libs/libpng/libpng-src/libpngpf.3
index 0abec74a2dd..b7557ca27ee 100644
--- a/Build/source/libs/libpng/libpng-src/libpngpf.3
+++ b/Build/source/libs/libpng/libpng-src/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "February 23, 2024"
+.TH LIBPNGPF 3 "September 12, 2024"
.SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.6.43
+libpng \- Portable Network Graphics (PNG) Reference Library 1.6.44
(private functions)
.SH SYNOPSIS
diff --git a/Build/source/libs/libpng/libpng-src/png.5 b/Build/source/libs/libpng/libpng-src/png.5
index a8a681813ff..14a3c432bff 100644
--- a/Build/source/libs/libpng/libpng-src/png.5
+++ b/Build/source/libs/libpng/libpng-src/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "February 23, 2024"
+.TH PNG 5 "September 12, 2024"
.SH NAME
png \- Portable Network Graphics (PNG) format
diff --git a/Build/source/libs/libpng/libpng-src/png.c b/Build/source/libs/libpng/libpng-src/png.c
index 9ed31570092..9a9fb23d942 100644
--- a/Build/source/libs/libpng/libpng-src/png.c
+++ b/Build/source/libs/libpng/libpng-src/png.c
@@ -14,7 +14,7 @@
#include "pngpriv.h"
/* Generate a compiler error if there is an old png.h in the search path. */
-typedef png_libpng_version_1_6_43 Your_png_h_is_not_version_1_6_43;
+typedef png_libpng_version_1_6_44 Your_png_h_is_not_version_1_6_44;
/* Tells libpng that we have already handled the first "num_bytes" bytes
* of the PNG file signature. If the PNG data is embedded into another
@@ -794,7 +794,7 @@ png_get_copyright(png_const_structrp png_ptr)
return PNG_STRING_COPYRIGHT
#else
return PNG_STRING_NEWLINE \
- "libpng version 1.6.43" PNG_STRING_NEWLINE \
+ "libpng version 1.6.44" PNG_STRING_NEWLINE \
"Copyright (c) 2018-2024 Cosmin Truta" PNG_STRING_NEWLINE \
"Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \
PNG_STRING_NEWLINE \
@@ -1203,6 +1203,24 @@ png_colorspace_sync(png_const_structrp png_ptr, png_inforp info_ptr)
#endif /* GAMMA */
#ifdef PNG_COLORSPACE_SUPPORTED
+static int
+png_safe_add(png_int_32 *addend0_and_result, png_int_32 addend1,
+ png_int_32 addend2) {
+ /* Safely add three integers. Returns 0 on success, 1 on overlow.
+ * IMPLEMENTATION NOTE: ANSI requires signed overflow not to occur, therefore
+ * relying on addition of two positive values producing a negative one is not
+ * safe.
+ */
+ int addend0 = *addend0_and_result;
+ if (0x7fffffff - addend0 < addend1)
+ return 1;
+ addend0 += addend1;
+ if (0x7fffffff - addend1 < addend2)
+ return 1;
+ *addend0_and_result = addend0 + addend2;
+ return 0;
+}
+
/* Added at libpng-1.5.5 to support read and write of true CIEXYZ values for
* cHRM, as opposed to using chromaticities. These internal APIs return
* non-zero on a parameter error. The X, Y and Z values are required to be
@@ -1211,38 +1229,52 @@ png_colorspace_sync(png_const_structrp png_ptr, png_inforp info_ptr)
static int
png_xy_from_XYZ(png_xy *xy, const png_XYZ *XYZ)
{
- png_int_32 d, dwhite, whiteX, whiteY;
+ png_int_32 d, dred, dgreen, dwhite, whiteX, whiteY;
- d = XYZ->red_X + XYZ->red_Y + XYZ->red_Z;
+ /* 'd' in each of the blocks below is just X+Y+Z for each component,
+ * x, y and z are X,Y,Z/(X+Y+Z).
+ */
+ d = XYZ->red_X;
+ if (png_safe_add(&d, XYZ->red_Y, XYZ->red_Z))
+ return 1;
if (png_muldiv(&xy->redx, XYZ->red_X, PNG_FP_1, d) == 0)
return 1;
if (png_muldiv(&xy->redy, XYZ->red_Y, PNG_FP_1, d) == 0)
return 1;
- dwhite = d;
+ dred = d;
whiteX = XYZ->red_X;
whiteY = XYZ->red_Y;
- d = XYZ->green_X + XYZ->green_Y + XYZ->green_Z;
+ d = XYZ->green_X;
+ if (png_safe_add(&d, XYZ->green_Y, XYZ->green_Z))
+ return 1;
if (png_muldiv(&xy->greenx, XYZ->green_X, PNG_FP_1, d) == 0)
return 1;
if (png_muldiv(&xy->greeny, XYZ->green_Y, PNG_FP_1, d) == 0)
return 1;
- dwhite += d;
+ dgreen = d;
whiteX += XYZ->green_X;
whiteY += XYZ->green_Y;
- d = XYZ->blue_X + XYZ->blue_Y + XYZ->blue_Z;
+ d = XYZ->blue_X;
+ if (png_safe_add(&d, XYZ->blue_Y, XYZ->blue_Z))
+ return 1;
if (png_muldiv(&xy->bluex, XYZ->blue_X, PNG_FP_1, d) == 0)
return 1;
if (png_muldiv(&xy->bluey, XYZ->blue_Y, PNG_FP_1, d) == 0)
return 1;
- dwhite += d;
whiteX += XYZ->blue_X;
whiteY += XYZ->blue_Y;
- /* The reference white is simply the sum of the end-point (X,Y,Z) vectors,
- * thus:
+ /* The reference white is simply the sum of the end-point (X,Y,Z) vectors so
+ * the fillowing calculates (X+Y+Z) of the reference white (media white,
+ * encoding white) itself:
*/
+ if (png_safe_add(&d, dred, dgreen))
+ return 1;
+
+ dwhite = d;
+
if (png_muldiv(&xy->whitex, whiteX, PNG_FP_1, dwhite) == 0)
return 1;
if (png_muldiv(&xy->whitey, whiteY, PNG_FP_1, dwhite) == 0)
@@ -1257,20 +1289,6 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy)
png_fixed_point red_inverse, green_inverse, blue_scale;
png_fixed_point left, right, denominator;
- /* Check xy and, implicitly, z. Note that wide gamut color spaces typically
- * have end points with 0 tristimulus values (these are impossible end
- * points, but they are used to cover the possible colors). We check
- * xy->whitey against 5, not 0, to avoid a possible integer overflow.
- */
- if (xy->redx < 0 || xy->redx > PNG_FP_1) return 1;
- if (xy->redy < 0 || xy->redy > PNG_FP_1-xy->redx) return 1;
- if (xy->greenx < 0 || xy->greenx > PNG_FP_1) return 1;
- if (xy->greeny < 0 || xy->greeny > PNG_FP_1-xy->greenx) return 1;
- if (xy->bluex < 0 || xy->bluex > PNG_FP_1) return 1;
- if (xy->bluey < 0 || xy->bluey > PNG_FP_1-xy->bluex) return 1;
- if (xy->whitex < 0 || xy->whitex > PNG_FP_1) return 1;
- if (xy->whitey < 5 || xy->whitey > PNG_FP_1-xy->whitex) return 1;
-
/* The reverse calculation is more difficult because the original tristimulus
* value had 9 independent values (red,green,blue)x(X,Y,Z) however only 8
* derived values were recorded in the cHRM chunk;
@@ -1451,16 +1469,16 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy)
* value of 2 indicates an internal error to the caller.
*/
if (png_muldiv(&left, xy->greenx-xy->bluex, xy->redy - xy->bluey, 7) == 0)
- return 2;
+ return 1;
if (png_muldiv(&right, xy->greeny-xy->bluey, xy->redx - xy->bluex, 7) == 0)
- return 2;
+ return 1;
denominator = left - right;
/* Now find the red numerator. */
if (png_muldiv(&left, xy->greenx-xy->bluex, xy->whitey-xy->bluey, 7) == 0)
- return 2;
+ return 1;
if (png_muldiv(&right, xy->greeny-xy->bluey, xy->whitex-xy->bluex, 7) == 0)
- return 2;
+ return 1;
/* Overflow is possible here and it indicates an extreme set of PNG cHRM
* chunk values. This calculation actually returns the reciprocal of the
@@ -1473,9 +1491,9 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy)
/* Similarly for green_inverse: */
if (png_muldiv(&left, xy->redy-xy->bluey, xy->whitex-xy->bluex, 7) == 0)
- return 2;
+ return 1;
if (png_muldiv(&right, xy->redx-xy->bluex, xy->whitey-xy->bluey, 7) == 0)
- return 2;
+ return 1;
if (png_muldiv(&green_inverse, xy->whitey, denominator, left-right) == 0 ||
green_inverse <= xy->whitey)
return 1;
@@ -1520,25 +1538,14 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy)
static int
png_XYZ_normalize(png_XYZ *XYZ)
{
- png_int_32 Y;
+ png_int_32 Y, Ytemp;
- if (XYZ->red_Y < 0 || XYZ->green_Y < 0 || XYZ->blue_Y < 0 ||
- XYZ->red_X < 0 || XYZ->green_X < 0 || XYZ->blue_X < 0 ||
- XYZ->red_Z < 0 || XYZ->green_Z < 0 || XYZ->blue_Z < 0)
+ /* Normalize by scaling so the sum of the end-point Y values is PNG_FP_1. */
+ Ytemp = XYZ->red_Y;
+ if (png_safe_add(&Ytemp, XYZ->green_Y, XYZ->blue_Y))
return 1;
- /* Normalize by scaling so the sum of the end-point Y values is PNG_FP_1.
- * IMPLEMENTATION NOTE: ANSI requires signed overflow not to occur, therefore
- * relying on addition of two positive values producing a negative one is not
- * safe.
- */
- Y = XYZ->red_Y;
- if (0x7fffffff - Y < XYZ->green_X)
- return 1;
- Y += XYZ->green_Y;
- if (0x7fffffff - Y < XYZ->blue_X)
- return 1;
- Y += XYZ->blue_Y;
+ Y = Ytemp;
if (Y != PNG_FP_1)
{
diff --git a/Build/source/libs/libpng/libpng-src/png.h b/Build/source/libs/libpng/libpng-src/png.h
index 83d39031260..04a233f393e 100644
--- a/Build/source/libs/libpng/libpng-src/png.h
+++ b/Build/source/libs/libpng/libpng-src/png.h
@@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library
*
- * libpng version 1.6.43
+ * libpng version 1.6.44
*
* Copyright (c) 2018-2024 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
@@ -15,7 +15,7 @@
* libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.6.35, July 2018:
* Glenn Randers-Pehrson
- * libpng versions 1.6.36, December 2018, through 1.6.43, February 2024:
+ * libpng versions 1.6.36, December 2018, through 1.6.44, September 2024:
* Cosmin Truta
* See also "Contributing Authors", below.
*/
@@ -239,7 +239,7 @@
* ...
* 1.5.30 15 10530 15.so.15.30[.0]
* ...
- * 1.6.43 16 10643 16.so.16.43[.0]
+ * 1.6.44 16 10644 16.so.16.44[.0]
*
* Henceforth the source version will match the shared-library major and
* minor numbers; the shared-library major version number will be used for
@@ -275,7 +275,7 @@
*/
/* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.6.43"
+#define PNG_LIBPNG_VER_STRING "1.6.44"
#define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n"
/* The versions of shared library builds should stay in sync, going forward */
@@ -286,18 +286,18 @@
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
#define PNG_LIBPNG_VER_MAJOR 1
#define PNG_LIBPNG_VER_MINOR 6
-#define PNG_LIBPNG_VER_RELEASE 43
+#define PNG_LIBPNG_VER_RELEASE 44
/* This should be zero for a public release, or non-zero for a
* development version.
*/
-#define PNG_LIBPNG_VER_BUILD 0
+#define PNG_LIBPNG_VER_BUILD 0
/* Release Status */
-#define PNG_LIBPNG_BUILD_ALPHA 1
-#define PNG_LIBPNG_BUILD_BETA 2
-#define PNG_LIBPNG_BUILD_RC 3
-#define PNG_LIBPNG_BUILD_STABLE 4
+#define PNG_LIBPNG_BUILD_ALPHA 1
+#define PNG_LIBPNG_BUILD_BETA 2
+#define PNG_LIBPNG_BUILD_RC 3
+#define PNG_LIBPNG_BUILD_STABLE 4
#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7
/* Release-Specific Flags */
@@ -317,7 +317,7 @@
* From version 1.0.1 it is:
* XXYYZZ, where XX=major, YY=minor, ZZ=release
*/
-#define PNG_LIBPNG_VER 10643 /* 1.6.43 */
+#define PNG_LIBPNG_VER 10644 /* 1.6.44 */
/* Library configuration: these options cannot be changed after
* the library has been built.
@@ -427,7 +427,7 @@ extern "C" {
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
-typedef char* png_libpng_version_1_6_43;
+typedef char* png_libpng_version_1_6_44;
/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info.
*
@@ -824,7 +824,7 @@ typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp,
* your compiler. This may be very difficult - try using a different compiler
* to build the library!
*/
-PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef);
+PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), (jmp_buf, int), typedef);
#endif
/* Transform masks for the high-level interface */
diff --git a/Build/source/libs/libpng/libpng-src/pngconf.h b/Build/source/libs/libpng/libpng-src/pngconf.h
index 000d7b1a8a6..4a4b58ac81e 100644
--- a/Build/source/libs/libpng/libpng-src/pngconf.h
+++ b/Build/source/libs/libpng/libpng-src/pngconf.h
@@ -1,7 +1,7 @@
/* pngconf.h - machine-configurable file for libpng
*
- * libpng version 1.6.43
+ * libpng version 1.6.44
*
* Copyright (c) 2018-2024 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
@@ -88,7 +88,7 @@
/* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect
* against legacy (pre ISOC90) compilers that did not understand function
- * prototypes. It is not required for modern C compilers.
+ * prototypes. [Deprecated.]
*/
#ifndef PNGARG
# define PNGARG(arglist) arglist
@@ -298,7 +298,7 @@
#ifndef PNG_EXPORTA
# define PNG_EXPORTA(ordinal, type, name, args, attributes) \
- PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \
+ PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), args, \
PNG_LINKAGE_API attributes)
#endif
@@ -316,7 +316,7 @@
#endif
#ifndef PNG_CALLBACK
-# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args)
+# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) args
#endif
/* Support for compiler specific function attributes. These are used
diff --git a/Build/source/libs/libpng/libpng-src/pngerror.c b/Build/source/libs/libpng/libpng-src/pngerror.c
index 29ebda79437..1babf9f8d24 100644
--- a/Build/source/libs/libpng/libpng-src/pngerror.c
+++ b/Build/source/libs/libpng/libpng-src/pngerror.c
@@ -20,13 +20,14 @@
#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-static PNG_FUNCTION(void, png_default_error,PNGARG((png_const_structrp png_ptr,
- png_const_charp error_message)),PNG_NORETURN);
+static PNG_FUNCTION(void /* PRIVATE */,
+png_default_error,(png_const_structrp png_ptr, png_const_charp error_message),
+ PNG_NORETURN);
#ifdef PNG_WARNINGS_SUPPORTED
static void /* PRIVATE */
-png_default_warning PNGARG((png_const_structrp png_ptr,
- png_const_charp warning_message));
+png_default_warning(png_const_structrp png_ptr,
+ png_const_charp warning_message);
#endif /* WARNINGS */
/* This function is called whenever there is a fatal error. This function
diff --git a/Build/source/libs/libpng/libpng-src/pnglibconf.h b/Build/source/libs/libpng/libpng-src/pnglibconf.h
index 83f09fbe773..f5ce441ecb9 100644
--- a/Build/source/libs/libpng/libpng-src/pnglibconf.h
+++ b/Build/source/libs/libpng/libpng-src/pnglibconf.h
@@ -1,6 +1,6 @@
/* pnglibconf.h - library build configuration */
-/* libpng version 1.6.43 */
+/* libpng version 1.6.44 */
/* Copyright (c) 2018-2024 Cosmin Truta */
/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */
diff --git a/Build/source/libs/libpng/libpng-src/pngpriv.h b/Build/source/libs/libpng/libpng-src/pngpriv.h
index 9bfdb713421..b59084e7eb9 100644
--- a/Build/source/libs/libpng/libpng-src/pngpriv.h
+++ b/Build/source/libs/libpng/libpng-src/pngpriv.h
@@ -140,47 +140,6 @@
* callbacks to do this.
*/
# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon
-
- /* By default the 'intrinsics' code in arm/filter_neon_intrinsics.c is used
- * if possible - if __ARM_NEON__ is set and the compiler version is not known
- * to be broken. This is controlled by PNG_ARM_NEON_IMPLEMENTATION which can
- * be:
- *
- * 1 The intrinsics code (the default with __ARM_NEON__)
- * 2 The hand coded assembler (the default without __ARM_NEON__)
- *
- * It is possible to set PNG_ARM_NEON_IMPLEMENTATION in CPPFLAGS, however
- * this is *NOT* supported and may cease to work even after a minor revision
- * to libpng. It *is* valid to do this for testing purposes, e.g. speed
- * testing or a new compiler, but the results should be communicated to the
- * libpng implementation list for incorporation in the next minor release.
- */
-# ifndef PNG_ARM_NEON_IMPLEMENTATION
-# if defined(__ARM_NEON__) || defined(__ARM_NEON)
-# if defined(__clang__)
- /* At present it is unknown by the libpng developers which versions
- * of clang support the intrinsics, however some or perhaps all
- * versions do not work with the assembler so this may be
- * irrelevant, so just use the default (do nothing here.)
- */
-# elif defined(__GNUC__)
- /* GCC 4.5.4 NEON support is known to be broken. 4.6.3 is known to
- * work, so if this *is* GCC, or G++, look for a version >4.5
- */
-# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)
-# define PNG_ARM_NEON_IMPLEMENTATION 2
-# endif /* no GNUC support */
-# endif /* __GNUC__ */
-# else /* !defined __ARM_NEON__ */
- /* The 'intrinsics' code simply won't compile without this -mfpu=neon:
- */
-# if !defined(__aarch64__) && !defined(_M_ARM64)
- /* The assembler code currently does not work on ARM64 */
-# define PNG_ARM_NEON_IMPLEMENTATION 2
-# endif /* __aarch64__ */
-# endif /* __ARM_NEON__ */
-# endif /* !PNG_ARM_NEON_IMPLEMENTATION */
-
# ifndef PNG_ARM_NEON_IMPLEMENTATION
/* Use the intrinsics code by default. */
# define PNG_ARM_NEON_IMPLEMENTATION 1
diff --git a/Build/source/libs/libpng/libpng-src/pngtest.c b/Build/source/libs/libpng/libpng-src/pngtest.c
index 45ef66a7015..5969f503103 100644
--- a/Build/source/libs/libpng/libpng-src/pngtest.c
+++ b/Build/source/libs/libpng/libpng-src/pngtest.c
@@ -45,8 +45,13 @@
#include "png.h"
+/* This hack was introduced for historical reasons, and we are
+ * still keeping it in libpng-1.6.x for compatibility reasons.
+ */
+#define STDERR stdout
+
/* Generate a compiler error if there is an old png.h in the search path. */
-typedef png_libpng_version_1_6_43 Your_png_h_is_not_version_1_6_43;
+typedef png_libpng_version_1_6_44 Your_png_h_is_not_version_1_6_44;
/* Ensure that all version numbers in png.h are consistent with one another. */
#if (PNG_LIBPNG_VER != PNG_LIBPNG_VER_MAJOR * 10000 + \
@@ -103,11 +108,6 @@ typedef png_libpng_version_1_6_43 Your_png_h_is_not_version_1_6_43;
typedef FILE * png_FILE_p;
#endif
-/* This hack was introduced for historical reasons, and we are
- * still keeping it in libpng-1.6.x for compatibility reasons.
- */
-#define STDERR stdout
-
#ifndef PNG_DEBUG
# define PNG_DEBUG 0
#endif
@@ -518,9 +518,9 @@ static int maximum_allocation = 0;
static int total_allocation = 0;
static int num_allocations = 0;
-png_voidp PNGCBAPI png_debug_malloc PNGARG((png_structp png_ptr,
- png_alloc_size_t size));
-void PNGCBAPI png_debug_free PNGARG((png_structp png_ptr, png_voidp ptr));
+png_voidp PNGCBAPI png_debug_malloc(png_structp png_ptr,
+ png_alloc_size_t size);
+void PNGCBAPI png_debug_free(png_structp png_ptr, png_voidp ptr);
png_voidp
PNGCBAPI png_debug_malloc(png_structp png_ptr, png_alloc_size_t size)
diff --git a/Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md b/Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md
index 641dde265f3..c0982178650 100644
--- a/Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md
+++ b/Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md
@@ -20,6 +20,8 @@ Author List
* Cosmin Truta
* Dan Rosser
* David Callu
+ * Eric Riff
+ * Erik Scholz
* Gianfranco Costamagna
* Gleb Mazovetskiy
* Glenn Randers-Pehrson
diff --git a/Build/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake b/Build/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake
new file mode 100644
index 00000000000..3b6f646de7b
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake
@@ -0,0 +1,15 @@
+include(CMakeFindDependencyMacro)
+
+find_dependency(ZLIB REQUIRED)
+
+include("${CMAKE_CURRENT_LIST_DIR}/PNGTargets.cmake")
+
+if(NOT TARGET PNG::PNG)
+ if(TARGET PNG::png_shared)
+ add_library(PNG::PNG INTERFACE IMPORTED)
+ target_link_libraries(PNG::PNG INTERFACE PNG::png_shared)
+ elseif(TARGET PNG::png_static)
+ add_library(PNG::PNG INTERFACE IMPORTED)
+ target_link_libraries(PNG::PNG INTERFACE PNG::png_static)
+ endif()
+endif()
diff --git a/Build/source/libs/libpng/libpng-src/scripts/cmake/README.md b/Build/source/libs/libpng/libpng-src/scripts/cmake/README.md
index ca418893a95..18e71071751 100644
--- a/Build/source/libs/libpng/libpng-src/scripts/cmake/README.md
+++ b/Build/source/libs/libpng/libpng-src/scripts/cmake/README.md
@@ -20,6 +20,7 @@ File List
CMakeLists.txt ==> The main CMake lists file
scripts/cmake/AUTHORS.md ==> The Authors file
scripts/cmake/README.md ==> This file
+ scripts/cmake/PNGConfig.cmake ==> Config file for FindPNG
scripts/cmake/genchk.cmake.in ==> Template for genchk.cmake
scripts/cmake/genout.cmake.in ==> Template for genout.cmake
scripts/cmake/gensrc.cmake.in ==> Template for gensrc.cmake
diff --git a/Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in b/Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in
index ab828596899..d4a333282fc 100644
--- a/Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in
+++ b/Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in
@@ -19,6 +19,7 @@ set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@")
set(AWK "@AWK@")
set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@)
+set(CMAKE_SYSROOT @CMAKE_SYSROOT@)
set(INCDIR "@CMAKE_CURRENT_BINARY_DIR@")
set(PNG_PREFIX "@PNG_PREFIX@")
set(PNGLIB_MAJOR "@PNGLIB_MAJOR@")
@@ -38,6 +39,10 @@ if(APPLE)
endif()
endif()
+if(CMAKE_SYSROOT)
+ set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} "--sysroot=${CMAKE_SYSROOT}")
+endif()
+
get_filename_component(INPUTEXT "${INPUT}" EXT)
get_filename_component(OUTPUTEXT "${OUTPUT}" EXT)
get_filename_component(INPUTBASE "${INPUT}" NAME_WE)
diff --git a/Build/source/libs/libpng/libpng-src/scripts/dfn.awk b/Build/source/libs/libpng/libpng-src/scripts/dfn.awk
index 0b25c8a3728..0b970e00618 100644
--- a/Build/source/libs/libpng/libpng-src/scripts/dfn.awk
+++ b/Build/source/libs/libpng/libpng-src/scripts/dfn.awk
@@ -75,12 +75,12 @@ $1 ~ /^PNG_DFN_END_SORT/{
if (lineno == "") lineno=NR
if (sub(/^[^"]*PNG_DFN *"/,"",line) != 1) {
- print "line", lineno ": processing failed:"
- print orig
- err=1
- next
+ print "line", lineno ": processing failed:"
+ print orig
+ err=1
+ next
} else {
- ++out_count
+ ++out_count
}
# Now examine quotes within the value:
@@ -94,7 +94,7 @@ $1 ~ /^PNG_DFN_END_SORT/{
# #define first_name John
# #define last_name Smith
#
- # PNG_DFN"#define name @'@" first_name "@ @" last_name "@@'"
+ # PNG_DFN"#define name @'@" first_name "@ @" last_name "@@'"
#
# Might get C preprocessed to:
#
@@ -102,7 +102,7 @@ $1 ~ /^PNG_DFN_END_SORT/{
#
# Which this script reduces to:
#
- # #define name "John Smith"
+ # #define name "John Smith"
#
while (1) {
# While there is an @" remove it and the next "@
@@ -195,7 +195,7 @@ $1 ~ /^PNG_DFN_END_SORT/{
END{
if (out_count > 0 || err > 0)
- exit err
+ exit err
print "no definition lines found"
exit 1
diff --git a/Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in b/Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in
index 37577f4134f..3d26a0a6a22 100644
--- a/Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in
+++ b/Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in
@@ -11,7 +11,7 @@
# Modeled after libxml-config.
-version=1.6.43
+version=1.6.44
prefix=""
libdir=""
libs=""
diff --git a/Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in b/Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in
index 6a581d1a481..fc3f6f67fb2 100644
--- a/Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in
+++ b/Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in
@@ -5,6 +5,6 @@ includedir=@includedir@/libpng16
Name: libpng
Description: Loads and saves PNG files
-Version: 1.6.43
+Version: 1.6.44
Libs: -L${libdir} -lpng16
Cflags: -I${includedir}
diff --git a/Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt b/Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt
index 83f09fbe773..f5ce441ecb9 100644
--- a/Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt
+++ b/Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt
@@ -1,6 +1,6 @@
/* pnglibconf.h - library build configuration */
-/* libpng version 1.6.43 */
+/* libpng version 1.6.44 */
/* Copyright (c) 2018-2024 Cosmin Truta */
/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */
diff --git a/Build/source/libs/libpng/version.ac b/Build/source/libs/libpng/version.ac
index 8f85bd0edce..da9dd431e5d 100644
--- a/Build/source/libs/libpng/version.ac
+++ b/Build/source/libs/libpng/version.ac
@@ -8,4 +8,4 @@ dnl
dnl --------------------------------------------------------
dnl
dnl m4-include this file to define the current libpng version
-m4_define([libpng_version], [1.6.43])
+m4_define([libpng_version], [1.6.44])
diff --git a/Build/source/texk/README b/Build/source/texk/README
index 662776344a3..66076840929 100644
--- a/Build/source/texk/README
+++ b/Build/source/texk/README
@@ -106,7 +106,7 @@ ttf2pk2 - maintained here, by us
ttfdump - maintained here, by us, since Taiwan upstream apparently gone.
-upmendex 1.07 - by Takuji Tanaka
+upmendex 1.09 - by Takuji Tanaka
https://ctan.org/pkg/upmendex
https://github.com/t-tk/upmendex-package
diff --git a/Build/source/texk/configure b/Build/source/texk/configure
index 8768fd2f0ab..22de60b80ac 100755
--- a/Build/source/texk/configure
+++ b/Build/source/texk/configure
@@ -799,6 +799,7 @@ enable_luahbtex
enable_luajithbtex
enable_mp
enable_pmp
+enable_texprof
enable_upmp
enable_xetex
enable_xetex_synctex
@@ -1599,6 +1600,7 @@ Optional Features:
--disable-luajithbtex do not compile and install LuaHBJITTeX
--disable-mp do not compile and install MetaPost
--disable-pmp do not compile and install pMetaPost
+ --disable-texprof do not compile and install TeXprof
--disable-upmp do not compile and install upMetaPost
--disable-xetex do not compile and install XeTeX
--disable-xetex-synctex build XeTeX without SyncTeX support
@@ -5028,6 +5030,17 @@ test "x$enable_web2c:$enable_pmp" = xyes:yes && {
need_libpng=yes
need_ptexenc=yes
}
+# Check whether --enable-texprof was given.
+if test ${enable_texprof+y}
+then :
+ enableval=$enable_texprof;
+fi
+case $enable_texprof in #(
+ yes | no) :
+ ;; #(
+ *) :
+ enable_texprof=yes ;;
+esac
# Check whether --enable-upmp was given.
if test ${enable_upmp+y}
then :
diff --git a/Build/source/texk/dvipdfm-x/ChangeLog b/Build/source/texk/dvipdfm-x/ChangeLog
index 178ae093195..a98d25e242b 100644
--- a/Build/source/texk/dvipdfm-x/ChangeLog
+++ b/Build/source/texk/dvipdfm-x/ChangeLog
@@ -1,3 +1,11 @@
+2024-09-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * tfm.c: More strict check to interpret OFM FONTDIR
+ as pTeX vertical writing.
+ https://github.com/texjporg/tex-jp-build/issues/170#issuecomment-2295037307
+ https://github.com/texjporg/tex-jp-build/issues/99
+ * configure.ac: version 20240922.
+
2024-05-18 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
* dvi.c: Remove obsolete comments.
diff --git a/Build/source/texk/dvipdfm-x/configure b/Build/source/texk/dvipdfm-x/configure
index 1f40a26118c..6e37f0112ea 100755
--- a/Build/source/texk/dvipdfm-x/configure
+++ b/Build/source/texk/dvipdfm-x/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for dvipdfm-x (TeX Live) 20240511.
+# Generated by GNU Autoconf 2.72 for dvipdfm-x (TeX Live) 20240922.
#
# Report bugs to <dvipdfmx@tug.org>.
#
@@ -614,8 +614,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='dvipdfm-x (TeX Live)'
PACKAGE_TARNAME='dvipdfm-x--tex-live-'
-PACKAGE_VERSION='20240511'
-PACKAGE_STRING='dvipdfm-x (TeX Live) 20240511'
+PACKAGE_VERSION='20240922'
+PACKAGE_STRING='dvipdfm-x (TeX Live) 20240922'
PACKAGE_BUGREPORT='dvipdfmx@tug.org'
PACKAGE_URL=''
@@ -1385,7 +1385,7 @@ 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 dvipdfm-x (TeX Live) 20240511 to adapt to many kinds of systems.
+'configure' configures dvipdfm-x (TeX Live) 20240922 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1457,7 +1457,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20240511:";;
+ short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20240922:";;
esac
cat <<\_ACEOF
@@ -1588,7 +1588,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-dvipdfm-x (TeX Live) configure 20240511
+dvipdfm-x (TeX Live) configure 20240922
generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2369,7 +2369,7 @@ 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 dvipdfm-x (TeX Live) $as_me 20240511, which was
+It was created by dvipdfm-x (TeX Live) $as_me 20240922, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
@@ -9263,7 +9263,7 @@ fi
# Define the identity of the package.
PACKAGE='dvipdfm-x--tex-live-'
- VERSION='20240511'
+ VERSION='20240922'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -16305,7 +16305,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-dvipdfm-x (TeX Live) config.lt 20240511
+dvipdfm-x (TeX Live) config.lt 20240922
configured by $0, generated by GNU Autoconf 2.72.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -18260,7 +18260,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by dvipdfm-x (TeX Live) $as_me 20240511, which was
+This file was extended by dvipdfm-x (TeX Live) $as_me 20240922, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18332,7 +18332,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-dvipdfm-x (TeX Live) config.status 20240511
+dvipdfm-x (TeX Live) config.status 20240922
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/texk/dvipdfm-x/configure.ac b/Build/source/texk/dvipdfm-x/configure.ac
index 64ace3a92ff..73472f349fe 100644
--- a/Build/source/texk/dvipdfm-x/configure.ac
+++ b/Build/source/texk/dvipdfm-x/configure.ac
@@ -8,7 +8,7 @@ dnl This file is free software; the copyright holder
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
-AC_INIT([dvipdfm-x (TeX Live)], [20240511], [dvipdfmx@tug.org])
+AC_INIT([dvipdfm-x (TeX Live)], [20240922], [dvipdfmx@tug.org])
AC_PREREQ([2.65])
AC_CONFIG_SRCDIR([agl.c])
AC_CONFIG_AUX_DIR([../../build-aux])
diff --git a/Build/source/texk/dvipdfm-x/tests/Makefile_upjf b/Build/source/texk/dvipdfm-x/tests/Makefile_upjf
index b3a6b9664dd..63067169cfc 100644
--- a/Build/source/texk/dvipdfm-x/tests/Makefile_upjf
+++ b/Build/source/texk/dvipdfm-x/tests/Makefile_upjf
@@ -41,12 +41,14 @@ upjv-r00.ofm:
upjf1-r.tfm:
uppltotf upjf1-r.pl
+# test for different mapping
upjf1_full.vf: upjf1_full.zvp0
jfmutil zvp02vf upjf1_full.zvp0
upjf1_omit.vf: upjf1_omit.zvp0
jfmutil zvp02vf upjf1_omit.zvp0
+# test for variation selector, compound character
upjf2_full.vf: upjf2_full.zvp0
jfmutil zvp02vf upjf2_full.zvp0
diff --git a/Build/source/texk/dvipdfm-x/tfm.c b/Build/source/texk/dvipdfm-x/tfm.c
index ef092348a91..0f633d67811 100644
--- a/Build/source/texk/dvipdfm-x/tfm.c
+++ b/Build/source/texk/dvipdfm-x/tfm.c
@@ -56,6 +56,8 @@
#define CHARACTER_INDEX(i) ((i))
#endif
+#define IS_WIDE_CHAR(i) (((i)>=0x2E80 && !(0xFB00<=(i) && (i)<=0xFB06)))
+
/*
* TFM Record structure:
* Multiple TFM's may be read in at once.
@@ -77,7 +79,7 @@ struct tfm_font
uint32_t nitcor, nlig, nkern, nextens;
uint32_t nfonparm;
#ifndef WITHOUT_OMEGA
- uint32_t fontdir;
+ uint32_t fontdir, iswide;
uint32_t nco, ncw, npc;
#endif /* !WITHOUT_OMEGA */
fixword *header;
@@ -105,6 +107,7 @@ tfm_font_init (struct tfm_font *tfm)
#ifndef WITHOUT_OMEGA
tfm->level = 0;
tfm->fontdir = 0;
+ tfm->iswide = 0;
tfm->nco = tfm->ncw = tfm->npc = 0;
#endif
tfm->char_info = NULL;
@@ -263,7 +266,7 @@ struct font_metric
fixword designsize;
char *codingscheme;
- int level, fontdir;
+ int level, fontdir, iswide;
int firstchar, lastchar;
fixword *widths;
@@ -742,6 +745,9 @@ ofm_do_char_info_one (FILE *tfm_file, struct tfm_font *tfm)
tfm->height_index[i+j+1] = tfm->height_index[i];
tfm->depth_index [i+j+1] = tfm->depth_index [i];
}
+ if (IS_WIDE_CHAR(i) || IS_WIDE_CHAR(i+repeats)) {
+ tfm->iswide = 1;
+ }
/* Skip ahead because we have already handled repeats */
i += repeats;
}
@@ -804,6 +810,7 @@ read_ofm (struct font_metric *fm, FILE *ofm_file, off_t ofm_file_size)
fm->lastchar = tfm.ec;
fm->level = tfm.level;
fm->source = SOURCE_TYPE_OFM;
+ fm->iswide = tfm.iswide;
tfm_font_clear(&tfm);
@@ -1266,7 +1273,7 @@ tfm_is_jfm (int font_id)
if (fms[font_id].source == SOURCE_TYPE_JFM) is_jfm = 1;
#ifndef WITHOUT_OMEGA
if (fms[font_id].source == SOURCE_TYPE_OFM
- && fms[font_id].level == 1 && fms[font_id].lastchar >= 0x2E00) is_jfm = 2;
+ && fms[font_id].level == 1 && fms[font_id].iswide == 1) is_jfm = 2;
#endif
return is_jfm;
diff --git a/Build/source/texk/dvipsk/ChangeLog b/Build/source/texk/dvipsk/ChangeLog
index 882de601225..86b089043bc 100644
--- a/Build/source/texk/dvipsk/ChangeLog
+++ b/Build/source/texk/dvipsk/ChangeLog
@@ -1,3 +1,23 @@
+2024-09-30 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * uptex-upjf2.test, testdata/upjf2.{tex,dvi},
+ testdata/upj{f,v}-c.{pl,tfm},
+ testdata/upj{f,v}2_full.{vf,zvp0}, testdata/upjf.map,
+ testdata/Makefile_upjf, Makefile.am:
+ Add a test for upTeX new encoding.
+ https://github.com/texjporg/tex-jp-build/issues/46
+
+2024-09-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * virtualfont.c, dvips.h: Support upTeX new encoding
+ for combining characters via virtual fonts.
+ https://github.com/texjporg/tex-jp-build/issues/46
+ * {virtualfont,dopage,tfmload}.c:
+ More strict check to interpret OFM FONTDIR
+ as pTeX vertical writing.
+ https://github.com/texjporg/tex-jp-build/issues/170#issuecomment-2295037307
+ https://github.com/texjporg/tex-jp-build/issues/99
+
2024-03-10 Karl Berry <karl@tug.org>
* TL'24 release.
diff --git a/Build/source/texk/dvipsk/Makefile.am b/Build/source/texk/dvipsk/Makefile.am
index 5b54e405977..c85f820d9aa 100644
--- a/Build/source/texk/dvipsk/Makefile.am
+++ b/Build/source/texk/dvipsk/Makefile.am
@@ -117,10 +117,13 @@ TESTS = test-afm2tfm.test
test-afm2tfm-test.log: afm2tfm$(EXEEXT)
TESTS += beginfontk1.test eepic-nan.test pfbincl.test \
quotecmd-test.pl same-name.test test-dvips.test \
- test-missing-image.test test-overflow-buffers.test uptex-vf.test
+ test-missing-image.test test-overflow-buffers.test \
+ uptex-vf.test uptex-upjf2.test
beginfontk1.log eepic-nan.log pfbincl.log \
quotecmd-test.log same-name.log test-dvips.log \
- test-overflow-buffers.log: dvips$(EXEEXT)
+ test-missing-image.log test-overflow-buffers.log \
+ uptex-vf.log uptex-upjf2.log \
+ : dvips$(EXEEXT)
AM_TESTS_ENVIRONMENT = TEXMFCNF=$(srcdir)/../kpathsea; export TEXMFCNF;
AM_TESTS_ENVIRONMENT += TEXCONFIG=$(srcdir)/testdata; export TEXCONFIG;
@@ -165,7 +168,7 @@ DISTCLEANFILES += beginfontk1.ps
EXTRA_DIST += testdata/eepic-nan.dvi testdata/eepic-nan.tex
DISTCLEANFILES += eepic-nan.ps
## pfbincl.test
-EXTRA_DIST += testdata/pfbincl.eps testdata/pfbincl.tex testdata/pfbincl.xdv testdata/pfbincl.xps
+EXTRA_DIST += testdata/pfbincl.eps testdata/pfbincl.tex testdata/pfbincl.xdv testdata/pfbincl.xps
DISTCLEANFILES += pfbincl.ps
## quotecmd-test.pl
EXTRA_DIST += testdata/quotecmd.dvi testdata/quotecmd.tex
@@ -199,7 +202,14 @@ EXTRA_DIST += testdata/Makefile_upjf testdata/upjf.tex testdata/upjf.dvi testdat
testdata/upjf1_full.zvp0 testdata/upjf1_full.vf \
testdata/upjf1_omit.zvp0 testdata/upjf1_omit.vf \
testdata/upjf_full.cnf testdata/upjf_omit.cnf
-DISTCLEANFILES += upjf.vf upjv.vf upjf-*.ofm upjv-*.ofm upjf-*.tfm upjf*_full.ps upjf*_omit*.ps
+DISTCLEANFILES += upjf.vf upjv.vf upjf-*.ofm upjv-*.ofm upjf-*.tfm \
+ upjf*_full.ps upjf*_omit*.ps
+## uptex-upjf2.test
+EXTRA_DIST += testdata/upjf2.tex testdata/upjf2.dvi \
+ testdata/upjf-c.pl testdata/upjf-c.tfm \
+ testdata/upjv-c.pl testdata/upjv-c.tfm \
+ testdata/upjf2_full.zvp0 testdata/upjf2_full.vf \
+ testdata/upjv2_full.zvp0 testdata/upjv2_full.vf
EXTRA_DIST += \
NEWS \
diff --git a/Build/source/texk/dvipsk/Makefile.in b/Build/source/texk/dvipsk/Makefile.in
index 61be1a42cda..f94d3db6d32 100644
--- a/Build/source/texk/dvipsk/Makefile.in
+++ b/Build/source/texk/dvipsk/Makefile.in
@@ -782,7 +782,11 @@ EXTRA_DIST = $(dist_prologues) texc.script $(TESTS) testdata/8r.enc \
testdata/upjv-r00.ofm testdata/upjf1-r.pl testdata/upjf1-r.tfm \
testdata/upjf1_full.zvp0 testdata/upjf1_full.vf \
testdata/upjf1_omit.zvp0 testdata/upjf1_omit.vf \
- testdata/upjf_full.cnf testdata/upjf_omit.cnf NEWS TODO \
+ testdata/upjf_full.cnf testdata/upjf_omit.cnf \
+ testdata/upjf2.tex testdata/upjf2.dvi testdata/upjf-c.pl \
+ testdata/upjf-c.tfm testdata/upjv-c.pl testdata/upjv-c.tfm \
+ testdata/upjf2_full.zvp0 testdata/upjf2_full.vf \
+ testdata/upjv2_full.zvp0 testdata/upjv2_full.vf NEWS TODO \
testdata/intoverflow.dvi testdata/vfnameoverflow.dvi atari \
cmfonts.map config.ps contrib/afm-extra contrib/colorsep.lpro \
contrib/configs contrib/crop.lpr contrib/latex209 \
@@ -795,7 +799,7 @@ TEST_EXTENSIONS = .pl .test
TESTS = test-afm2tfm.test beginfontk1.test eepic-nan.test pfbincl.test \
quotecmd-test.pl same-name.test test-dvips.test \
test-missing-image.test test-overflow-buffers.test \
- uptex-vf.test
+ uptex-vf.test uptex-upjf2.test
AM_TESTS_ENVIRONMENT = TEXMFCNF=$(srcdir)/../kpathsea; export \
TEXMFCNF; TEXCONFIG=$(srcdir)/testdata; export TEXCONFIG; \
TEXFONTS=$(srcdir)/testdata; export TEXFONTS; \
@@ -2046,7 +2050,9 @@ squeeze/stamp-squeeze:
test-afm2tfm-test.log: afm2tfm$(EXEEXT)
beginfontk1.log eepic-nan.log pfbincl.log \
quotecmd-test.log same-name.log test-dvips.log \
- test-overflow-buffers.log: dvips$(EXEEXT)
+ test-missing-image.log test-overflow-buffers.log \
+ uptex-vf.log uptex-upjf2.log \
+ : dvips$(EXEEXT)
dist-hook:
cd "$(distdir)" && rm -rf $(NEVER_DIST)
diff --git a/Build/source/texk/dvipsk/dopage.c b/Build/source/texk/dvipsk/dopage.c
index a9e23ca860b..e45e7766e1b 100644
--- a/Build/source/texk/dvipsk/dopage.c
+++ b/Build/source/texk/dvipsk/dopage.c
@@ -138,7 +138,7 @@ dochar:
int kind0;
cd0 = curfnt->localfonts->desc->chardesc;
kind0 = curfnt->localfonts->desc->kind;
- if (mychar<curfnt->localfonts->desc->maxchars && (cd0[mychar].flags & EXISTS)) {
+ if (mychar<curfnt->localfonts->desc->maxchars && (cd0[mychar].flags2 & EXISTS)) {
#ifdef DEBUG
if (dd(D_FONTS))
fprintf_str(stderr,
diff --git a/Build/source/texk/dvipsk/dvips.h b/Build/source/texk/dvipsk/dvips.h
index 6b79d53b7ab..9cc385d26d3 100644
--- a/Build/source/texk/dvipsk/dvips.h
+++ b/Build/source/texk/dvipsk/dvips.h
@@ -10,6 +10,7 @@
#define CREATIONDATE
#define MAX_CODE 0x110000
+#define MAX_VF_CODE 0x1000000
#define MAX_2BYTES_CODE 0x10000
#define VF_MEM_UNIT 0x10000
#define CD_IDX(i) ((i>=MAX_2BYTES_CODE ? MAX_2BYTES_CODE : i))
diff --git a/Build/source/texk/dvipsk/testdata/Makefile_upjf b/Build/source/texk/dvipsk/testdata/Makefile_upjf
index a457b565a2d..a64b1e269d5 100644
--- a/Build/source/texk/dvipsk/testdata/Makefile_upjf
+++ b/Build/source/texk/dvipsk/testdata/Makefile_upjf
@@ -41,12 +41,26 @@ upjv-r00.ofm:
upjf1-r.tfm:
uppltotf upjf1-r.pl
-upjf1_full.vf:
+# test for different mapping
+upjf1_full.vf: upjf1_full.zvp0
jfmutil zvp02vf upjf1_full.zvp0
-upjf1_omit.vf:
+upjf1_omit.vf: upjf1_omit.zvp0
jfmutil zvp02vf upjf1_omit.zvp0
+# test for variation selector, compound character
+upjf2_full.vf: upjf2_full.zvp0
+ jfmutil zvp02vf upjf2_full.zvp0
+
+upjv2_full.vf: upjv2_full.zvp0
+ jfmutil zvp02vf upjv2_full.zvp0
+
+upjf-c.tfm:
+ uppltotf upjf-c.pl
+
+upjv-c.tfm:
+ uppltotf upjv-c.pl
+
upjf.dvi: upjf.tex
uplatex upjf.tex
dvispc -a upjf.dvi upjf.dvitxt
@@ -54,3 +68,10 @@ upjf.dvi: upjf.tex
dvispc -x upjf.dvitxt upjf.dvi
rm upjf.dvitxt
+upjf2.dvi: upjf2.tex
+ uplatex upjf2.tex
+ dvispc -a upjf2.dvi upjf2.dvitxt
+ sed -i '/xxx/d' upjf2.dvitxt
+ dvispc -x upjf2.dvitxt upjf2.dvi
+ rm upjf2.dvitxt
+
diff --git a/Build/source/texk/dvipsk/testdata/upjf-c.pl b/Build/source/texk/dvipsk/testdata/upjf-c.pl
new file mode 100644
index 00000000000..e76699f7a07
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjf-c.pl
@@ -0,0 +1,24 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(FAMILY UPJIS KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
diff --git a/Build/source/texk/dvipsk/testdata/upjf-c.tfm b/Build/source/texk/dvipsk/testdata/upjf-c.tfm
new file mode 100644
index 00000000000..9a525bb5a8a
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjf-c.tfm
Binary files differ
diff --git a/Build/source/texk/dvipsk/testdata/upjf.map b/Build/source/texk/dvipsk/testdata/upjf.map
index 78add04a954..0261e7a9706 100644
--- a/Build/source/texk/dvipsk/testdata/upjf.map
+++ b/Build/source/texk/dvipsk/testdata/upjf.map
@@ -1,6 +1,8 @@
upjf-r Ryumin-Light-UniJIS-UTF16-H
upjf-g GothicBBB-Medium-UniJIS-UTF16-H
+upjf-c Ryumin-Light-Identity-H
upjv-r Ryumin-Light-UniJIS-UTF16-V
upjv-g GothicBBB-Medium-UniJIS-UTF16-V
+upjv-c Ryumin-Light-Identity-V
cmr10 <cmr10.pfb
diff --git a/Build/source/texk/dvipsk/testdata/upjf2.dvi b/Build/source/texk/dvipsk/testdata/upjf2.dvi
new file mode 100644
index 00000000000..4365546fcda
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjf2.dvi
Binary files differ
diff --git a/Build/source/texk/dvipsk/testdata/upjf2.tex b/Build/source/texk/dvipsk/testdata/upjf2.tex
new file mode 100644
index 00000000000..3c888362869
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjf2.tex
@@ -0,0 +1,22 @@
+% Copyright (C) 2020-2024 Japanese TeX Development Community
+% You may freely use, modify and/or distribute this file.
+
+\documentclass{ujarticle}
+%\usepackage[T1]{fontenc}
+%\usepackage{mathptmx}
+
+\begin{document}
+\pagestyle{empty}
+\prebreakpenalty`ㇷ=0
+\font\upjf=upjf at 10pt
+\fbox{\hbox{\yoko
+\upjf あいうえおか゚ㇷㇷ゚アイウエオ、☃~雪晴☀𠮟。卿卿 卿︂卿󠄀卿󠄁卿󠄂,ABC xyz.
+}}
+
+\tbaselineshift0.3zh
+\font\upjv=upjv at 10pt
+\fbox{\hbox{\tate
+\upjv あいうえおか゚ㇷㇷ゚、☃~雪晴☀𠮟。卿卿 卿︂卿󠄀卿󠄁卿󠄂,ABC xyz.
+}}
+\end{document}
+
diff --git a/Build/source/texk/dvipsk/testdata/upjf2_full.vf b/Build/source/texk/dvipsk/testdata/upjf2_full.vf
new file mode 100644
index 00000000000..0cf7145cab7
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjf2_full.vf
Binary files differ
diff --git a/Build/source/texk/dvipsk/testdata/upjf2_full.zvp0 b/Build/source/texk/dvipsk/testdata/upjf2_full.zvp0
new file mode 100644
index 00000000000..c570b16b47d
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjf2_full.zvp0
@@ -0,0 +1,2979 @@
+(VTITLE )
+(DESIGNSIZE R 10.0)
+(CHECKSUM O 0)
+(MAPFONT D 0
+ (FONTNAME upjf-r)
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.0)
+ )
+(MAPFONT D 1
+ (FONTNAME upjf-g)
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.0)
+ )
+(MAPFONT D 2
+ (FONTNAME upjf-c)
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.0)
+ )
+(CHARACTER H A7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H A7)
+ )
+ )
+(CHARACTER H D7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H D7)
+ )
+ )
+(CHARACTER H F7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H F7)
+ )
+ )
+(CHARACTER H 2018
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 2)
+ (SETCHAR H 29E)
+ )
+ )
+(CHARACTER H 2019
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 29F)
+ )
+ )
+(CHARACTER H 201C
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 2)
+ (SETCHAR H 2A0)
+ )
+ )
+(CHARACTER H 201D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 2A1)
+ )
+ )
+(CHARACTER H 2600
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 2600)
+ )
+ )
+(CHARACTER H 2603
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 2603)
+ )
+ )
+(CHARACTER H 3000
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3000)
+ )
+ )
+(CHARACTER H 3001
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3001)
+ )
+ )
+(CHARACTER H 3002
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3002)
+ )
+ )
+(CHARACTER H 3003
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3003)
+ )
+ )
+(CHARACTER H 3004
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3004)
+ )
+ )
+(CHARACTER H 3005
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3005)
+ )
+ )
+(CHARACTER H 3006
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3006)
+ )
+ )
+(CHARACTER H 3007
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3007)
+ )
+ )
+(CHARACTER H 3008
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3008)
+ )
+ )
+(CHARACTER H 3009
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3009)
+ )
+ )
+(CHARACTER H 300A
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 300A)
+ )
+ )
+(CHARACTER H 300B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 300B)
+ )
+ )
+(CHARACTER H 300C
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 300C)
+ )
+ )
+(CHARACTER H 300D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 300D)
+ )
+ )
+(CHARACTER H 300E
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 300E)
+ )
+ )
+(CHARACTER H 300F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 300F)
+ )
+ )
+(CHARACTER H 3010
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3010)
+ )
+ )
+(CHARACTER H 3011
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3011)
+ )
+ )
+(CHARACTER H 3012
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3012)
+ )
+ )
+(CHARACTER H 3013
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3013)
+ )
+ )
+(CHARACTER H 3014
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3014)
+ )
+ )
+(CHARACTER H 3015
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3015)
+ )
+ )
+(CHARACTER H 3016
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3016)
+ )
+ )
+(CHARACTER H 3017
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3017)
+ )
+ )
+(CHARACTER H 3018
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3018)
+ )
+ )
+(CHARACTER H 3019
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3019)
+ )
+ )
+(CHARACTER H 301A
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 301A)
+ )
+ )
+(CHARACTER H 301B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 301B)
+ )
+ )
+(CHARACTER H 301C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 301C)
+ )
+ )
+(CHARACTER H 301D
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 301D)
+ )
+ )
+(CHARACTER H 301E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 301E)
+ )
+ )
+(CHARACTER H 301F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 301F)
+ )
+ )
+(CHARACTER H 3020
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3020)
+ )
+ )
+(CHARACTER H 3021
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3021)
+ )
+ )
+(CHARACTER H 3022
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3022)
+ )
+ )
+(CHARACTER H 3023
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3023)
+ )
+ )
+(CHARACTER H 3024
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3024)
+ )
+ )
+(CHARACTER H 3025
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3025)
+ )
+ )
+(CHARACTER H 3026
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3026)
+ )
+ )
+(CHARACTER H 3027
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3027)
+ )
+ )
+(CHARACTER H 3028
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3028)
+ )
+ )
+(CHARACTER H 3029
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3029)
+ )
+ )
+(CHARACTER H 302A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302A)
+ )
+ )
+(CHARACTER H 302B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302B)
+ )
+ )
+(CHARACTER H 302C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302C)
+ )
+ )
+(CHARACTER H 302D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302D)
+ )
+ )
+(CHARACTER H 302E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302E)
+ )
+ )
+(CHARACTER H 302F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302F)
+ )
+ )
+(CHARACTER H 3030
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3030)
+ )
+ )
+(CHARACTER H 3031
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3031)
+ )
+ )
+(CHARACTER H 3032
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3032)
+ )
+ )
+(CHARACTER H 3033
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3033)
+ )
+ )
+(CHARACTER H 3034
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3034)
+ )
+ )
+(CHARACTER H 3035
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3035)
+ )
+ )
+(CHARACTER H 3036
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3036)
+ )
+ )
+(CHARACTER H 3037
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3037)
+ )
+ )
+(CHARACTER H 3038
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3038)
+ )
+ )
+(CHARACTER H 3039
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3039)
+ )
+ )
+(CHARACTER H 303A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303A)
+ )
+ )
+(CHARACTER H 303B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303B)
+ )
+ )
+(CHARACTER H 303C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303C)
+ )
+ )
+(CHARACTER H 303D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303D)
+ )
+ )
+(CHARACTER H 303E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303E)
+ )
+ )
+(CHARACTER H 303F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303F)
+ )
+ )
+(CHARACTER H 3040
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3040)
+ )
+ )
+(CHARACTER H 3041
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3041)
+ )
+ )
+(CHARACTER H 3042
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3042)
+ )
+ )
+(CHARACTER H 3043
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3043)
+ )
+ )
+(CHARACTER H 3044
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3044)
+ )
+ )
+(CHARACTER H 3045
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3045)
+ )
+ )
+(CHARACTER H 3046
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3046)
+ )
+ )
+(CHARACTER H 3047
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3047)
+ )
+ )
+(CHARACTER H 3048
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3048)
+ )
+ )
+(CHARACTER H 3049
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3049)
+ )
+ )
+(CHARACTER H 304A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304A)
+ )
+ )
+(CHARACTER H 304B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304B)
+ )
+ )
+(CHARACTER H 304C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304C)
+ )
+ )
+(CHARACTER H 304D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304D)
+ )
+ )
+(CHARACTER H 304E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304E)
+ )
+ )
+(CHARACTER H 304F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304F)
+ )
+ )
+(CHARACTER H 3050
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3050)
+ )
+ )
+(CHARACTER H 3051
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3051)
+ )
+ )
+(CHARACTER H 3052
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3052)
+ )
+ )
+(CHARACTER H 3053
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3053)
+ )
+ )
+(CHARACTER H 3054
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3054)
+ )
+ )
+(CHARACTER H 3055
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3055)
+ )
+ )
+(CHARACTER H 3056
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3056)
+ )
+ )
+(CHARACTER H 3057
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3057)
+ )
+ )
+(CHARACTER H 3058
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3058)
+ )
+ )
+(CHARACTER H 3059
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3059)
+ )
+ )
+(CHARACTER H 305A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305A)
+ )
+ )
+(CHARACTER H 305B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305B)
+ )
+ )
+(CHARACTER H 305C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305C)
+ )
+ )
+(CHARACTER H 305D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305D)
+ )
+ )
+(CHARACTER H 305E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305E)
+ )
+ )
+(CHARACTER H 305F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305F)
+ )
+ )
+(CHARACTER H 3060
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3060)
+ )
+ )
+(CHARACTER H 3061
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3061)
+ )
+ )
+(CHARACTER H 3062
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3062)
+ )
+ )
+(CHARACTER H 3063
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3063)
+ )
+ )
+(CHARACTER H 3064
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3064)
+ )
+ )
+(CHARACTER H 3065
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3065)
+ )
+ )
+(CHARACTER H 3066
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3066)
+ )
+ )
+(CHARACTER H 3067
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3067)
+ )
+ )
+(CHARACTER H 3068
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3068)
+ )
+ )
+(CHARACTER H 3069
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3069)
+ )
+ )
+(CHARACTER H 306A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306A)
+ )
+ )
+(CHARACTER H 306B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306B)
+ )
+ )
+(CHARACTER H 306C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306C)
+ )
+ )
+(CHARACTER H 306D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306D)
+ )
+ )
+(CHARACTER H 306E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306E)
+ )
+ )
+(CHARACTER H 306F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306F)
+ )
+ )
+(CHARACTER H 3070
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3070)
+ )
+ )
+(CHARACTER H 3071
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3071)
+ )
+ )
+(CHARACTER H 3072
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3072)
+ )
+ )
+(CHARACTER H 3073
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3073)
+ )
+ )
+(CHARACTER H 3074
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3074)
+ )
+ )
+(CHARACTER H 3075
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3075)
+ )
+ )
+(CHARACTER H 3076
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3076)
+ )
+ )
+(CHARACTER H 3077
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3077)
+ )
+ )
+(CHARACTER H 3078
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3078)
+ )
+ )
+(CHARACTER H 3079
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3079)
+ )
+ )
+(CHARACTER H 307A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307A)
+ )
+ )
+(CHARACTER H 307B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307B)
+ )
+ )
+(CHARACTER H 307C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307C)
+ )
+ )
+(CHARACTER H 307D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307D)
+ )
+ )
+(CHARACTER H 307E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307E)
+ )
+ )
+(CHARACTER H 307F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307F)
+ )
+ )
+(CHARACTER H 3080
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3080)
+ )
+ )
+(CHARACTER H 3081
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3081)
+ )
+ )
+(CHARACTER H 3082
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3082)
+ )
+ )
+(CHARACTER H 3083
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3083)
+ )
+ )
+(CHARACTER H 3084
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3084)
+ )
+ )
+(CHARACTER H 3085
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3085)
+ )
+ )
+(CHARACTER H 3086
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3086)
+ )
+ )
+(CHARACTER H 3087
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3087)
+ )
+ )
+(CHARACTER H 3088
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3088)
+ )
+ )
+(CHARACTER H 3089
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3089)
+ )
+ )
+(CHARACTER H 308A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308A)
+ )
+ )
+(CHARACTER H 308B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308B)
+ )
+ )
+(CHARACTER H 308C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308C)
+ )
+ )
+(CHARACTER H 308D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308D)
+ )
+ )
+(CHARACTER H 308E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308E)
+ )
+ )
+(CHARACTER H 308F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308F)
+ )
+ )
+(CHARACTER H 3090
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3090)
+ )
+ )
+(CHARACTER H 3091
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3091)
+ )
+ )
+(CHARACTER H 3092
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3092)
+ )
+ )
+(CHARACTER H 3093
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3093)
+ )
+ )
+(CHARACTER H 3094
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3094)
+ )
+ )
+(CHARACTER H 3095
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3095)
+ )
+ )
+(CHARACTER H 3096
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3096)
+ )
+ )
+(CHARACTER H 3097
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3097)
+ )
+ )
+(CHARACTER H 3098
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3098)
+ )
+ )
+(CHARACTER H 3099
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3099)
+ )
+ )
+(CHARACTER H 309A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309A)
+ )
+ )
+(CHARACTER H 309B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309B)
+ )
+ )
+(CHARACTER H 309C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309C)
+ )
+ )
+(CHARACTER H 309D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309D)
+ )
+ )
+(CHARACTER H 309E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309E)
+ )
+ )
+(CHARACTER H 309F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309F)
+ )
+ )
+(CHARACTER H 537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 537F)
+ )
+ )
+(CHARACTER H 6674
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 6674)
+ )
+ )
+(CHARACTER H 96EA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 96EA)
+ )
+ )
+(CHARACTER H FF00
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF00)
+ )
+ )
+(CHARACTER H FF01
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF01)
+ )
+ )
+(CHARACTER H FF02
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF02)
+ )
+ )
+(CHARACTER H FF03
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF03)
+ )
+ )
+(CHARACTER H FF04
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF04)
+ )
+ )
+(CHARACTER H FF05
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF05)
+ )
+ )
+(CHARACTER H FF06
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF06)
+ )
+ )
+(CHARACTER H FF07
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF07)
+ )
+ )
+(CHARACTER H FF08
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H FF08)
+ )
+ )
+(CHARACTER H FF09
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF09)
+ )
+ )
+(CHARACTER H FF0A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0A)
+ )
+ )
+(CHARACTER H FF0B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0B)
+ )
+ )
+(CHARACTER H FF0C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0C)
+ )
+ )
+(CHARACTER H FF0D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0D)
+ )
+ )
+(CHARACTER H FF0E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0E)
+ )
+ )
+(CHARACTER H FF0F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0F)
+ )
+ )
+(CHARACTER H FF10
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF10)
+ )
+ )
+(CHARACTER H FF11
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF11)
+ )
+ )
+(CHARACTER H FF12
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF12)
+ )
+ )
+(CHARACTER H FF13
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF13)
+ )
+ )
+(CHARACTER H FF14
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF14)
+ )
+ )
+(CHARACTER H FF15
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF15)
+ )
+ )
+(CHARACTER H FF16
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF16)
+ )
+ )
+(CHARACTER H FF17
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF17)
+ )
+ )
+(CHARACTER H FF18
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF18)
+ )
+ )
+(CHARACTER H FF19
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF19)
+ )
+ )
+(CHARACTER H FF1A
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.25)
+ (SELECTFONT D 1)
+ (SETCHAR H FF1A)
+ )
+ )
+(CHARACTER H FF1B
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.25)
+ (SELECTFONT D 1)
+ (SETCHAR H FF1B)
+ )
+ )
+(CHARACTER H FF1C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF1C)
+ )
+ )
+(CHARACTER H FF1D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF1D)
+ )
+ )
+(CHARACTER H FF1E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF1E)
+ )
+ )
+(CHARACTER H FF1F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF1F)
+ )
+ )
+(CHARACTER H FF20
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF20)
+ )
+ )
+(CHARACTER H FF21
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF21)
+ )
+ )
+(CHARACTER H FF22
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF22)
+ )
+ )
+(CHARACTER H FF23
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF23)
+ )
+ )
+(CHARACTER H FF24
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF24)
+ )
+ )
+(CHARACTER H FF25
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF25)
+ )
+ )
+(CHARACTER H FF26
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF26)
+ )
+ )
+(CHARACTER H FF27
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF27)
+ )
+ )
+(CHARACTER H FF28
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF28)
+ )
+ )
+(CHARACTER H FF29
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF29)
+ )
+ )
+(CHARACTER H FF2A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2A)
+ )
+ )
+(CHARACTER H FF2B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2B)
+ )
+ )
+(CHARACTER H FF2C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2C)
+ )
+ )
+(CHARACTER H FF2D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2D)
+ )
+ )
+(CHARACTER H FF2E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2E)
+ )
+ )
+(CHARACTER H FF2F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2F)
+ )
+ )
+(CHARACTER H FF30
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF30)
+ )
+ )
+(CHARACTER H FF31
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF31)
+ )
+ )
+(CHARACTER H FF32
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF32)
+ )
+ )
+(CHARACTER H FF33
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF33)
+ )
+ )
+(CHARACTER H FF34
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF34)
+ )
+ )
+(CHARACTER H FF35
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF35)
+ )
+ )
+(CHARACTER H FF36
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF36)
+ )
+ )
+(CHARACTER H FF37
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF37)
+ )
+ )
+(CHARACTER H FF38
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF38)
+ )
+ )
+(CHARACTER H FF39
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF39)
+ )
+ )
+(CHARACTER H FF3A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3A)
+ )
+ )
+(CHARACTER H FF3B
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H FF3B)
+ )
+ )
+(CHARACTER H FF3C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3C)
+ )
+ )
+(CHARACTER H FF3D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3D)
+ )
+ )
+(CHARACTER H FF3E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3E)
+ )
+ )
+(CHARACTER H FF3F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3F)
+ )
+ )
+(CHARACTER H FF40
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF40)
+ )
+ )
+(CHARACTER H FF41
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF41)
+ )
+ )
+(CHARACTER H FF42
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF42)
+ )
+ )
+(CHARACTER H FF43
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF43)
+ )
+ )
+(CHARACTER H FF44
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF44)
+ )
+ )
+(CHARACTER H FF45
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF45)
+ )
+ )
+(CHARACTER H FF46
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF46)
+ )
+ )
+(CHARACTER H FF47
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF47)
+ )
+ )
+(CHARACTER H FF48
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF48)
+ )
+ )
+(CHARACTER H FF49
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF49)
+ )
+ )
+(CHARACTER H FF4A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4A)
+ )
+ )
+(CHARACTER H FF4B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4B)
+ )
+ )
+(CHARACTER H FF4C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4C)
+ )
+ )
+(CHARACTER H FF4D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4D)
+ )
+ )
+(CHARACTER H FF4E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4E)
+ )
+ )
+(CHARACTER H FF4F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4F)
+ )
+ )
+(CHARACTER H FF50
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF50)
+ )
+ )
+(CHARACTER H FF51
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF51)
+ )
+ )
+(CHARACTER H FF52
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF52)
+ )
+ )
+(CHARACTER H FF53
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF53)
+ )
+ )
+(CHARACTER H FF54
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF54)
+ )
+ )
+(CHARACTER H FF55
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF55)
+ )
+ )
+(CHARACTER H FF56
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF56)
+ )
+ )
+(CHARACTER H FF57
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF57)
+ )
+ )
+(CHARACTER H FF58
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF58)
+ )
+ )
+(CHARACTER H FF59
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF59)
+ )
+ )
+(CHARACTER H FF5A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF5A)
+ )
+ )
+(CHARACTER H FF5B
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H FF5B)
+ )
+ )
+(CHARACTER H FF5C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF5C)
+ )
+ )
+(CHARACTER H FF5D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF5D)
+ )
+ )
+(CHARACTER H FF5E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF5E)
+ )
+ )
+(CHARACTER H FF5F
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H FF5F)
+ )
+ )
+(CHARACTER H FF60
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF60)
+ )
+ )
+(CHARACTER H FF61
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF61)
+ )
+ )
+(CHARACTER H FF62
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF62)
+ )
+ )
+(CHARACTER H FF63
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF63)
+ )
+ )
+(CHARACTER H FF64
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF64)
+ )
+ )
+(CHARACTER H FF65
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF65)
+ )
+ )
+(CHARACTER H FF66
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF66)
+ )
+ )
+(CHARACTER H FF67
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF67)
+ )
+ )
+(CHARACTER H FF68
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF68)
+ )
+ )
+(CHARACTER H FF69
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF69)
+ )
+ )
+(CHARACTER H FF6A
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6A)
+ )
+ )
+(CHARACTER H FF6B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6B)
+ )
+ )
+(CHARACTER H FF6C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6C)
+ )
+ )
+(CHARACTER H FF6D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6D)
+ )
+ )
+(CHARACTER H FF6E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6E)
+ )
+ )
+(CHARACTER H FF6F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6F)
+ )
+ )
+(CHARACTER H FF70
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF70)
+ )
+ )
+(CHARACTER H FF71
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF71)
+ )
+ )
+(CHARACTER H FF72
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF72)
+ )
+ )
+(CHARACTER H FF73
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF73)
+ )
+ )
+(CHARACTER H FF74
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF74)
+ )
+ )
+(CHARACTER H FF75
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF75)
+ )
+ )
+(CHARACTER H FF76
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF76)
+ )
+ )
+(CHARACTER H FF77
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF77)
+ )
+ )
+(CHARACTER H FF78
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF78)
+ )
+ )
+(CHARACTER H FF79
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF79)
+ )
+ )
+(CHARACTER H FF7A
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7A)
+ )
+ )
+(CHARACTER H FF7B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7B)
+ )
+ )
+(CHARACTER H FF7C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7C)
+ )
+ )
+(CHARACTER H FF7D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7D)
+ )
+ )
+(CHARACTER H FF7E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7E)
+ )
+ )
+(CHARACTER H FF7F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7F)
+ )
+ )
+(CHARACTER H FF80
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF80)
+ )
+ )
+(CHARACTER H FF81
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF81)
+ )
+ )
+(CHARACTER H FF82
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF82)
+ )
+ )
+(CHARACTER H FF83
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF83)
+ )
+ )
+(CHARACTER H FF84
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF84)
+ )
+ )
+(CHARACTER H FF85
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF85)
+ )
+ )
+(CHARACTER H FF86
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF86)
+ )
+ )
+(CHARACTER H FF87
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF87)
+ )
+ )
+(CHARACTER H FF88
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF88)
+ )
+ )
+(CHARACTER H FF89
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF89)
+ )
+ )
+(CHARACTER H FF8A
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8A)
+ )
+ )
+(CHARACTER H FF8B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8B)
+ )
+ )
+(CHARACTER H FF8C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8C)
+ )
+ )
+(CHARACTER H FF8D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8D)
+ )
+ )
+(CHARACTER H FF8E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8E)
+ )
+ )
+(CHARACTER H FF8F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8F)
+ )
+ )
+(CHARACTER H FF90
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF90)
+ )
+ )
+(CHARACTER H FF91
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF91)
+ )
+ )
+(CHARACTER H FF92
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF92)
+ )
+ )
+(CHARACTER H FF93
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF93)
+ )
+ )
+(CHARACTER H FF94
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF94)
+ )
+ )
+(CHARACTER H FF95
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF95)
+ )
+ )
+(CHARACTER H FF96
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF96)
+ )
+ )
+(CHARACTER H FF97
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF97)
+ )
+ )
+(CHARACTER H FF98
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF98)
+ )
+ )
+(CHARACTER H FF99
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF99)
+ )
+ )
+(CHARACTER H FF9A
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9A)
+ )
+ )
+(CHARACTER H FF9B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9B)
+ )
+ )
+(CHARACTER H FF9C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9C)
+ )
+ )
+(CHARACTER H FF9D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9D)
+ )
+ )
+(CHARACTER H FF9E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9E)
+ )
+ )
+(CHARACTER H FF9F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9F)
+ )
+ )
+(CHARACTER H FFA0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA0)
+ )
+ )
+(CHARACTER H FFA1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA1)
+ )
+ )
+(CHARACTER H FFA2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA2)
+ )
+ )
+(CHARACTER H FFA3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA3)
+ )
+ )
+(CHARACTER H FFA4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA4)
+ )
+ )
+(CHARACTER H FFA5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA5)
+ )
+ )
+(CHARACTER H FFA6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA6)
+ )
+ )
+(CHARACTER H FFA7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA7)
+ )
+ )
+(CHARACTER H FFA8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA8)
+ )
+ )
+(CHARACTER H FFA9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA9)
+ )
+ )
+(CHARACTER H FFAA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAA)
+ )
+ )
+(CHARACTER H FFAB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAB)
+ )
+ )
+(CHARACTER H FFAC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAC)
+ )
+ )
+(CHARACTER H FFAD
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAD)
+ )
+ )
+(CHARACTER H FFAE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAE)
+ )
+ )
+(CHARACTER H FFAF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAF)
+ )
+ )
+(CHARACTER H FFB0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB0)
+ )
+ )
+(CHARACTER H FFB1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB1)
+ )
+ )
+(CHARACTER H FFB2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB2)
+ )
+ )
+(CHARACTER H FFB3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB3)
+ )
+ )
+(CHARACTER H FFB4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB4)
+ )
+ )
+(CHARACTER H FFB5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB5)
+ )
+ )
+(CHARACTER H FFB6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB6)
+ )
+ )
+(CHARACTER H FFB7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB7)
+ )
+ )
+(CHARACTER H FFB8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB8)
+ )
+ )
+(CHARACTER H FFB9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB9)
+ )
+ )
+(CHARACTER H FFBA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBA)
+ )
+ )
+(CHARACTER H FFBB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBB)
+ )
+ )
+(CHARACTER H FFBC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBC)
+ )
+ )
+(CHARACTER H FFBD
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBD)
+ )
+ )
+(CHARACTER H FFBE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBE)
+ )
+ )
+(CHARACTER H FFBF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBF)
+ )
+ )
+(CHARACTER H FFC0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC0)
+ )
+ )
+(CHARACTER H FFC1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC1)
+ )
+ )
+(CHARACTER H FFC2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC2)
+ )
+ )
+(CHARACTER H FFC3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC3)
+ )
+ )
+(CHARACTER H FFC4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC4)
+ )
+ )
+(CHARACTER H FFC5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC5)
+ )
+ )
+(CHARACTER H FFC6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC6)
+ )
+ )
+(CHARACTER H FFC7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC7)
+ )
+ )
+(CHARACTER H FFC8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC8)
+ )
+ )
+(CHARACTER H FFC9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC9)
+ )
+ )
+(CHARACTER H FFCA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCA)
+ )
+ )
+(CHARACTER H FFCB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCB)
+ )
+ )
+(CHARACTER H FFCC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCC)
+ )
+ )
+(CHARACTER H FFCD
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCD)
+ )
+ )
+(CHARACTER H FFCE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCE)
+ )
+ )
+(CHARACTER H FFCF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCF)
+ )
+ )
+(CHARACTER H FFD0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD0)
+ )
+ )
+(CHARACTER H FFD1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD1)
+ )
+ )
+(CHARACTER H FFD2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD2)
+ )
+ )
+(CHARACTER H FFD3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD3)
+ )
+ )
+(CHARACTER H FFD4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD4)
+ )
+ )
+(CHARACTER H FFD5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD5)
+ )
+ )
+(CHARACTER H FFD6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD6)
+ )
+ )
+(CHARACTER H FFD7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD7)
+ )
+ )
+(CHARACTER H FFD8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD8)
+ )
+ )
+(CHARACTER H FFD9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD9)
+ )
+ )
+(CHARACTER H FFDA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDA)
+ )
+ )
+(CHARACTER H FFDB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDB)
+ )
+ )
+(CHARACTER H FFDC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDC)
+ )
+ )
+(CHARACTER H FFDD
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDD)
+ )
+ )
+(CHARACTER H FFDE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDE)
+ )
+ )
+(CHARACTER H FFDF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDF)
+ )
+ )
+(CHARACTER H FFE0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE0)
+ )
+ )
+(CHARACTER H FFE1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE1)
+ )
+ )
+(CHARACTER H FFE2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE2)
+ )
+ )
+(CHARACTER H FFE3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE3)
+ )
+ )
+(CHARACTER H FFE4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE4)
+ )
+ )
+(CHARACTER H FFE5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE5)
+ )
+ )
+(CHARACTER H FFE6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE6)
+ )
+ )
+(CHARACTER H FFE7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE7)
+ )
+ )
+(CHARACTER H FFE8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE8)
+ )
+ )
+(CHARACTER H FFE9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE9)
+ )
+ )
+(CHARACTER H FFEA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEA)
+ )
+ )
+(CHARACTER H FFEB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEB)
+ )
+ )
+(CHARACTER H FFEC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEC)
+ )
+ )
+(CHARACTER H FFED
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFED)
+ )
+ )
+(CHARACTER H FFEE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEE)
+ )
+ )
+(CHARACTER H FFEF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEF)
+ )
+ )
+(CHARACTER H 20B9F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 20B9F)
+ )
+ )
+(CHARACTER H 2F833
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 2F833)
+ )
+ )
+(CHARACTER H 24304B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 3F51)
+ )
+ )
+(CHARACTER H 2431F7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 3F76)
+ )
+ )
+(CHARACTER H 48537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 2F833)
+ )
+ )
+(CHARACTER H 80537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 3597)
+ )
+ )
+(CHARACTER H 84537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 6A2)
+ )
+ )
+(CHARACTER H 88537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 1DED)
+ )
+ )
diff --git a/Build/source/texk/dvipsk/testdata/upjv-c.pl b/Build/source/texk/dvipsk/testdata/upjv-c.pl
new file mode 100644
index 00000000000..91ec7bbb9d2
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjv-c.pl
@@ -0,0 +1,25 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(DIRECTION TATE)
+(FAMILY UPJIS KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
diff --git a/Build/source/texk/dvipsk/testdata/upjv-c.tfm b/Build/source/texk/dvipsk/testdata/upjv-c.tfm
new file mode 100644
index 00000000000..4491109d447
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjv-c.tfm
Binary files differ
diff --git a/Build/source/texk/dvipsk/testdata/upjv2_full.vf b/Build/source/texk/dvipsk/testdata/upjv2_full.vf
new file mode 100644
index 00000000000..29b8536902b
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjv2_full.vf
Binary files differ
diff --git a/Build/source/texk/dvipsk/testdata/upjv2_full.zvp0 b/Build/source/texk/dvipsk/testdata/upjv2_full.zvp0
new file mode 100644
index 00000000000..b36d2e66196
--- /dev/null
+++ b/Build/source/texk/dvipsk/testdata/upjv2_full.zvp0
@@ -0,0 +1,2979 @@
+(VTITLE )
+(DESIGNSIZE R 10.0)
+(CHECKSUM O 0)
+(MAPFONT D 0
+ (FONTNAME upjv-r)
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.0)
+ )
+(MAPFONT D 1
+ (FONTNAME upjv-g)
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.0)
+ )
+(MAPFONT D 2
+ (FONTNAME upjv-c)
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.0)
+ )
+(CHARACTER H A7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H A7)
+ )
+ )
+(CHARACTER H D7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H D7)
+ )
+ )
+(CHARACTER H F7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H F7)
+ )
+ )
+(CHARACTER H 2018
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 2)
+ (SETCHAR H 2059)
+ )
+ )
+(CHARACTER H 2019
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 205A)
+ )
+ )
+(CHARACTER H 201C
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 2)
+ (SETCHAR H 2057)
+ )
+ )
+(CHARACTER H 201D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 2058)
+ )
+ )
+(CHARACTER H 2600
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 2600)
+ )
+ )
+(CHARACTER H 2603
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 2603)
+ )
+ )
+(CHARACTER H 3000
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3000)
+ )
+ )
+(CHARACTER H 3001
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3001)
+ )
+ )
+(CHARACTER H 3002
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3002)
+ )
+ )
+(CHARACTER H 3003
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3003)
+ )
+ )
+(CHARACTER H 3004
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3004)
+ )
+ )
+(CHARACTER H 3005
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3005)
+ )
+ )
+(CHARACTER H 3006
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3006)
+ )
+ )
+(CHARACTER H 3007
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3007)
+ )
+ )
+(CHARACTER H 3008
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3008)
+ )
+ )
+(CHARACTER H 3009
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3009)
+ )
+ )
+(CHARACTER H 300A
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 300A)
+ )
+ )
+(CHARACTER H 300B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 300B)
+ )
+ )
+(CHARACTER H 300C
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 300C)
+ )
+ )
+(CHARACTER H 300D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 300D)
+ )
+ )
+(CHARACTER H 300E
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 300E)
+ )
+ )
+(CHARACTER H 300F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 300F)
+ )
+ )
+(CHARACTER H 3010
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3010)
+ )
+ )
+(CHARACTER H 3011
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3011)
+ )
+ )
+(CHARACTER H 3012
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3012)
+ )
+ )
+(CHARACTER H 3013
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3013)
+ )
+ )
+(CHARACTER H 3014
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3014)
+ )
+ )
+(CHARACTER H 3015
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3015)
+ )
+ )
+(CHARACTER H 3016
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3016)
+ )
+ )
+(CHARACTER H 3017
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3017)
+ )
+ )
+(CHARACTER H 3018
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 3018)
+ )
+ )
+(CHARACTER H 3019
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3019)
+ )
+ )
+(CHARACTER H 301A
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 301A)
+ )
+ )
+(CHARACTER H 301B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 301B)
+ )
+ )
+(CHARACTER H 301C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 301C)
+ )
+ )
+(CHARACTER H 301D
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H 301D)
+ )
+ )
+(CHARACTER H 301E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 301E)
+ )
+ )
+(CHARACTER H 301F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 301F)
+ )
+ )
+(CHARACTER H 3020
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3020)
+ )
+ )
+(CHARACTER H 3021
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3021)
+ )
+ )
+(CHARACTER H 3022
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3022)
+ )
+ )
+(CHARACTER H 3023
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3023)
+ )
+ )
+(CHARACTER H 3024
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3024)
+ )
+ )
+(CHARACTER H 3025
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3025)
+ )
+ )
+(CHARACTER H 3026
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3026)
+ )
+ )
+(CHARACTER H 3027
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3027)
+ )
+ )
+(CHARACTER H 3028
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3028)
+ )
+ )
+(CHARACTER H 3029
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3029)
+ )
+ )
+(CHARACTER H 302A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302A)
+ )
+ )
+(CHARACTER H 302B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302B)
+ )
+ )
+(CHARACTER H 302C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302C)
+ )
+ )
+(CHARACTER H 302D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302D)
+ )
+ )
+(CHARACTER H 302E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302E)
+ )
+ )
+(CHARACTER H 302F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 302F)
+ )
+ )
+(CHARACTER H 3030
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3030)
+ )
+ )
+(CHARACTER H 3031
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3031)
+ )
+ )
+(CHARACTER H 3032
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3032)
+ )
+ )
+(CHARACTER H 3033
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3033)
+ )
+ )
+(CHARACTER H 3034
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3034)
+ )
+ )
+(CHARACTER H 3035
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3035)
+ )
+ )
+(CHARACTER H 3036
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3036)
+ )
+ )
+(CHARACTER H 3037
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3037)
+ )
+ )
+(CHARACTER H 3038
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3038)
+ )
+ )
+(CHARACTER H 3039
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3039)
+ )
+ )
+(CHARACTER H 303A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303A)
+ )
+ )
+(CHARACTER H 303B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303B)
+ )
+ )
+(CHARACTER H 303C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303C)
+ )
+ )
+(CHARACTER H 303D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303D)
+ )
+ )
+(CHARACTER H 303E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303E)
+ )
+ )
+(CHARACTER H 303F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 303F)
+ )
+ )
+(CHARACTER H 3040
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3040)
+ )
+ )
+(CHARACTER H 3041
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3041)
+ )
+ )
+(CHARACTER H 3042
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3042)
+ )
+ )
+(CHARACTER H 3043
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3043)
+ )
+ )
+(CHARACTER H 3044
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3044)
+ )
+ )
+(CHARACTER H 3045
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3045)
+ )
+ )
+(CHARACTER H 3046
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3046)
+ )
+ )
+(CHARACTER H 3047
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3047)
+ )
+ )
+(CHARACTER H 3048
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3048)
+ )
+ )
+(CHARACTER H 3049
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3049)
+ )
+ )
+(CHARACTER H 304A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304A)
+ )
+ )
+(CHARACTER H 304B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304B)
+ )
+ )
+(CHARACTER H 304C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304C)
+ )
+ )
+(CHARACTER H 304D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304D)
+ )
+ )
+(CHARACTER H 304E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304E)
+ )
+ )
+(CHARACTER H 304F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 304F)
+ )
+ )
+(CHARACTER H 3050
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3050)
+ )
+ )
+(CHARACTER H 3051
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3051)
+ )
+ )
+(CHARACTER H 3052
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3052)
+ )
+ )
+(CHARACTER H 3053
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3053)
+ )
+ )
+(CHARACTER H 3054
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3054)
+ )
+ )
+(CHARACTER H 3055
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3055)
+ )
+ )
+(CHARACTER H 3056
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3056)
+ )
+ )
+(CHARACTER H 3057
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3057)
+ )
+ )
+(CHARACTER H 3058
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3058)
+ )
+ )
+(CHARACTER H 3059
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3059)
+ )
+ )
+(CHARACTER H 305A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305A)
+ )
+ )
+(CHARACTER H 305B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305B)
+ )
+ )
+(CHARACTER H 305C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305C)
+ )
+ )
+(CHARACTER H 305D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305D)
+ )
+ )
+(CHARACTER H 305E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305E)
+ )
+ )
+(CHARACTER H 305F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 305F)
+ )
+ )
+(CHARACTER H 3060
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3060)
+ )
+ )
+(CHARACTER H 3061
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3061)
+ )
+ )
+(CHARACTER H 3062
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3062)
+ )
+ )
+(CHARACTER H 3063
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3063)
+ )
+ )
+(CHARACTER H 3064
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3064)
+ )
+ )
+(CHARACTER H 3065
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3065)
+ )
+ )
+(CHARACTER H 3066
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3066)
+ )
+ )
+(CHARACTER H 3067
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3067)
+ )
+ )
+(CHARACTER H 3068
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3068)
+ )
+ )
+(CHARACTER H 3069
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3069)
+ )
+ )
+(CHARACTER H 306A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306A)
+ )
+ )
+(CHARACTER H 306B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306B)
+ )
+ )
+(CHARACTER H 306C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306C)
+ )
+ )
+(CHARACTER H 306D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306D)
+ )
+ )
+(CHARACTER H 306E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306E)
+ )
+ )
+(CHARACTER H 306F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 306F)
+ )
+ )
+(CHARACTER H 3070
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3070)
+ )
+ )
+(CHARACTER H 3071
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3071)
+ )
+ )
+(CHARACTER H 3072
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3072)
+ )
+ )
+(CHARACTER H 3073
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3073)
+ )
+ )
+(CHARACTER H 3074
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3074)
+ )
+ )
+(CHARACTER H 3075
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3075)
+ )
+ )
+(CHARACTER H 3076
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3076)
+ )
+ )
+(CHARACTER H 3077
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3077)
+ )
+ )
+(CHARACTER H 3078
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3078)
+ )
+ )
+(CHARACTER H 3079
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3079)
+ )
+ )
+(CHARACTER H 307A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307A)
+ )
+ )
+(CHARACTER H 307B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307B)
+ )
+ )
+(CHARACTER H 307C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307C)
+ )
+ )
+(CHARACTER H 307D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307D)
+ )
+ )
+(CHARACTER H 307E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307E)
+ )
+ )
+(CHARACTER H 307F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 307F)
+ )
+ )
+(CHARACTER H 3080
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3080)
+ )
+ )
+(CHARACTER H 3081
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3081)
+ )
+ )
+(CHARACTER H 3082
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3082)
+ )
+ )
+(CHARACTER H 3083
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3083)
+ )
+ )
+(CHARACTER H 3084
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3084)
+ )
+ )
+(CHARACTER H 3085
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3085)
+ )
+ )
+(CHARACTER H 3086
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3086)
+ )
+ )
+(CHARACTER H 3087
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3087)
+ )
+ )
+(CHARACTER H 3088
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3088)
+ )
+ )
+(CHARACTER H 3089
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3089)
+ )
+ )
+(CHARACTER H 308A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308A)
+ )
+ )
+(CHARACTER H 308B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308B)
+ )
+ )
+(CHARACTER H 308C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308C)
+ )
+ )
+(CHARACTER H 308D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308D)
+ )
+ )
+(CHARACTER H 308E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308E)
+ )
+ )
+(CHARACTER H 308F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 308F)
+ )
+ )
+(CHARACTER H 3090
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3090)
+ )
+ )
+(CHARACTER H 3091
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3091)
+ )
+ )
+(CHARACTER H 3092
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3092)
+ )
+ )
+(CHARACTER H 3093
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3093)
+ )
+ )
+(CHARACTER H 3094
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3094)
+ )
+ )
+(CHARACTER H 3095
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3095)
+ )
+ )
+(CHARACTER H 3096
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3096)
+ )
+ )
+(CHARACTER H 3097
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3097)
+ )
+ )
+(CHARACTER H 3098
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3098)
+ )
+ )
+(CHARACTER H 3099
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 3099)
+ )
+ )
+(CHARACTER H 309A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309A)
+ )
+ )
+(CHARACTER H 309B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309B)
+ )
+ )
+(CHARACTER H 309C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309C)
+ )
+ )
+(CHARACTER H 309D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309D)
+ )
+ )
+(CHARACTER H 309E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309E)
+ )
+ )
+(CHARACTER H 309F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H 309F)
+ )
+ )
+(CHARACTER H 537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 537F)
+ )
+ )
+(CHARACTER H 6674
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 6674)
+ )
+ )
+(CHARACTER H 96EA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 96EA)
+ )
+ )
+(CHARACTER H FF00
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF00)
+ )
+ )
+(CHARACTER H FF01
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF01)
+ )
+ )
+(CHARACTER H FF02
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF02)
+ )
+ )
+(CHARACTER H FF03
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF03)
+ )
+ )
+(CHARACTER H FF04
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF04)
+ )
+ )
+(CHARACTER H FF05
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF05)
+ )
+ )
+(CHARACTER H FF06
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF06)
+ )
+ )
+(CHARACTER H FF07
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF07)
+ )
+ )
+(CHARACTER H FF08
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H FF08)
+ )
+ )
+(CHARACTER H FF09
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF09)
+ )
+ )
+(CHARACTER H FF0A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0A)
+ )
+ )
+(CHARACTER H FF0B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0B)
+ )
+ )
+(CHARACTER H FF0C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0C)
+ )
+ )
+(CHARACTER H FF0D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0D)
+ )
+ )
+(CHARACTER H FF0E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0E)
+ )
+ )
+(CHARACTER H FF0F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF0F)
+ )
+ )
+(CHARACTER H FF10
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF10)
+ )
+ )
+(CHARACTER H FF11
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF11)
+ )
+ )
+(CHARACTER H FF12
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF12)
+ )
+ )
+(CHARACTER H FF13
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF13)
+ )
+ )
+(CHARACTER H FF14
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF14)
+ )
+ )
+(CHARACTER H FF15
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF15)
+ )
+ )
+(CHARACTER H FF16
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF16)
+ )
+ )
+(CHARACTER H FF17
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF17)
+ )
+ )
+(CHARACTER H FF18
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF18)
+ )
+ )
+(CHARACTER H FF19
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF19)
+ )
+ )
+(CHARACTER H FF1A
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.25)
+ (SELECTFONT D 1)
+ (SETCHAR H FF1A)
+ )
+ )
+(CHARACTER H FF1B
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.25)
+ (SELECTFONT D 1)
+ (SETCHAR H FF1B)
+ )
+ )
+(CHARACTER H FF1C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF1C)
+ )
+ )
+(CHARACTER H FF1D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF1D)
+ )
+ )
+(CHARACTER H FF1E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF1E)
+ )
+ )
+(CHARACTER H FF1F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF1F)
+ )
+ )
+(CHARACTER H FF20
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF20)
+ )
+ )
+(CHARACTER H FF21
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF21)
+ )
+ )
+(CHARACTER H FF22
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF22)
+ )
+ )
+(CHARACTER H FF23
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF23)
+ )
+ )
+(CHARACTER H FF24
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF24)
+ )
+ )
+(CHARACTER H FF25
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF25)
+ )
+ )
+(CHARACTER H FF26
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF26)
+ )
+ )
+(CHARACTER H FF27
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF27)
+ )
+ )
+(CHARACTER H FF28
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF28)
+ )
+ )
+(CHARACTER H FF29
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF29)
+ )
+ )
+(CHARACTER H FF2A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2A)
+ )
+ )
+(CHARACTER H FF2B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2B)
+ )
+ )
+(CHARACTER H FF2C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2C)
+ )
+ )
+(CHARACTER H FF2D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2D)
+ )
+ )
+(CHARACTER H FF2E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2E)
+ )
+ )
+(CHARACTER H FF2F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF2F)
+ )
+ )
+(CHARACTER H FF30
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF30)
+ )
+ )
+(CHARACTER H FF31
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF31)
+ )
+ )
+(CHARACTER H FF32
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF32)
+ )
+ )
+(CHARACTER H FF33
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF33)
+ )
+ )
+(CHARACTER H FF34
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF34)
+ )
+ )
+(CHARACTER H FF35
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF35)
+ )
+ )
+(CHARACTER H FF36
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF36)
+ )
+ )
+(CHARACTER H FF37
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF37)
+ )
+ )
+(CHARACTER H FF38
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF38)
+ )
+ )
+(CHARACTER H FF39
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF39)
+ )
+ )
+(CHARACTER H FF3A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3A)
+ )
+ )
+(CHARACTER H FF3B
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H FF3B)
+ )
+ )
+(CHARACTER H FF3C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3C)
+ )
+ )
+(CHARACTER H FF3D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3D)
+ )
+ )
+(CHARACTER H FF3E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3E)
+ )
+ )
+(CHARACTER H FF3F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF3F)
+ )
+ )
+(CHARACTER H FF40
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF40)
+ )
+ )
+(CHARACTER H FF41
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF41)
+ )
+ )
+(CHARACTER H FF42
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF42)
+ )
+ )
+(CHARACTER H FF43
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF43)
+ )
+ )
+(CHARACTER H FF44
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF44)
+ )
+ )
+(CHARACTER H FF45
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF45)
+ )
+ )
+(CHARACTER H FF46
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF46)
+ )
+ )
+(CHARACTER H FF47
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF47)
+ )
+ )
+(CHARACTER H FF48
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF48)
+ )
+ )
+(CHARACTER H FF49
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF49)
+ )
+ )
+(CHARACTER H FF4A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4A)
+ )
+ )
+(CHARACTER H FF4B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4B)
+ )
+ )
+(CHARACTER H FF4C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4C)
+ )
+ )
+(CHARACTER H FF4D
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4D)
+ )
+ )
+(CHARACTER H FF4E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4E)
+ )
+ )
+(CHARACTER H FF4F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF4F)
+ )
+ )
+(CHARACTER H FF50
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF50)
+ )
+ )
+(CHARACTER H FF51
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF51)
+ )
+ )
+(CHARACTER H FF52
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF52)
+ )
+ )
+(CHARACTER H FF53
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF53)
+ )
+ )
+(CHARACTER H FF54
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF54)
+ )
+ )
+(CHARACTER H FF55
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF55)
+ )
+ )
+(CHARACTER H FF56
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF56)
+ )
+ )
+(CHARACTER H FF57
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF57)
+ )
+ )
+(CHARACTER H FF58
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF58)
+ )
+ )
+(CHARACTER H FF59
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF59)
+ )
+ )
+(CHARACTER H FF5A
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF5A)
+ )
+ )
+(CHARACTER H FF5B
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H FF5B)
+ )
+ )
+(CHARACTER H FF5C
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF5C)
+ )
+ )
+(CHARACTER H FF5D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF5D)
+ )
+ )
+(CHARACTER H FF5E
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF5E)
+ )
+ )
+(CHARACTER H FF5F
+ (CHARWD R 0.5)
+ (MAP
+ (MOVERIGHT R -0.5)
+ (SELECTFONT D 1)
+ (SETCHAR H FF5F)
+ )
+ )
+(CHARACTER H FF60
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF60)
+ )
+ )
+(CHARACTER H FF61
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF61)
+ )
+ )
+(CHARACTER H FF62
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF62)
+ )
+ )
+(CHARACTER H FF63
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF63)
+ )
+ )
+(CHARACTER H FF64
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF64)
+ )
+ )
+(CHARACTER H FF65
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF65)
+ )
+ )
+(CHARACTER H FF66
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF66)
+ )
+ )
+(CHARACTER H FF67
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF67)
+ )
+ )
+(CHARACTER H FF68
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF68)
+ )
+ )
+(CHARACTER H FF69
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF69)
+ )
+ )
+(CHARACTER H FF6A
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6A)
+ )
+ )
+(CHARACTER H FF6B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6B)
+ )
+ )
+(CHARACTER H FF6C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6C)
+ )
+ )
+(CHARACTER H FF6D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6D)
+ )
+ )
+(CHARACTER H FF6E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6E)
+ )
+ )
+(CHARACTER H FF6F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF6F)
+ )
+ )
+(CHARACTER H FF70
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF70)
+ )
+ )
+(CHARACTER H FF71
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF71)
+ )
+ )
+(CHARACTER H FF72
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF72)
+ )
+ )
+(CHARACTER H FF73
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF73)
+ )
+ )
+(CHARACTER H FF74
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF74)
+ )
+ )
+(CHARACTER H FF75
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF75)
+ )
+ )
+(CHARACTER H FF76
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF76)
+ )
+ )
+(CHARACTER H FF77
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF77)
+ )
+ )
+(CHARACTER H FF78
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF78)
+ )
+ )
+(CHARACTER H FF79
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF79)
+ )
+ )
+(CHARACTER H FF7A
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7A)
+ )
+ )
+(CHARACTER H FF7B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7B)
+ )
+ )
+(CHARACTER H FF7C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7C)
+ )
+ )
+(CHARACTER H FF7D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7D)
+ )
+ )
+(CHARACTER H FF7E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7E)
+ )
+ )
+(CHARACTER H FF7F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF7F)
+ )
+ )
+(CHARACTER H FF80
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF80)
+ )
+ )
+(CHARACTER H FF81
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF81)
+ )
+ )
+(CHARACTER H FF82
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF82)
+ )
+ )
+(CHARACTER H FF83
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF83)
+ )
+ )
+(CHARACTER H FF84
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF84)
+ )
+ )
+(CHARACTER H FF85
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF85)
+ )
+ )
+(CHARACTER H FF86
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF86)
+ )
+ )
+(CHARACTER H FF87
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF87)
+ )
+ )
+(CHARACTER H FF88
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF88)
+ )
+ )
+(CHARACTER H FF89
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF89)
+ )
+ )
+(CHARACTER H FF8A
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8A)
+ )
+ )
+(CHARACTER H FF8B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8B)
+ )
+ )
+(CHARACTER H FF8C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8C)
+ )
+ )
+(CHARACTER H FF8D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8D)
+ )
+ )
+(CHARACTER H FF8E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8E)
+ )
+ )
+(CHARACTER H FF8F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF8F)
+ )
+ )
+(CHARACTER H FF90
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF90)
+ )
+ )
+(CHARACTER H FF91
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF91)
+ )
+ )
+(CHARACTER H FF92
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF92)
+ )
+ )
+(CHARACTER H FF93
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF93)
+ )
+ )
+(CHARACTER H FF94
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF94)
+ )
+ )
+(CHARACTER H FF95
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF95)
+ )
+ )
+(CHARACTER H FF96
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF96)
+ )
+ )
+(CHARACTER H FF97
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF97)
+ )
+ )
+(CHARACTER H FF98
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF98)
+ )
+ )
+(CHARACTER H FF99
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF99)
+ )
+ )
+(CHARACTER H FF9A
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9A)
+ )
+ )
+(CHARACTER H FF9B
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9B)
+ )
+ )
+(CHARACTER H FF9C
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9C)
+ )
+ )
+(CHARACTER H FF9D
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9D)
+ )
+ )
+(CHARACTER H FF9E
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9E)
+ )
+ )
+(CHARACTER H FF9F
+ (CHARWD R 0.5)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FF9F)
+ )
+ )
+(CHARACTER H FFA0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA0)
+ )
+ )
+(CHARACTER H FFA1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA1)
+ )
+ )
+(CHARACTER H FFA2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA2)
+ )
+ )
+(CHARACTER H FFA3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA3)
+ )
+ )
+(CHARACTER H FFA4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA4)
+ )
+ )
+(CHARACTER H FFA5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA5)
+ )
+ )
+(CHARACTER H FFA6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA6)
+ )
+ )
+(CHARACTER H FFA7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA7)
+ )
+ )
+(CHARACTER H FFA8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA8)
+ )
+ )
+(CHARACTER H FFA9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFA9)
+ )
+ )
+(CHARACTER H FFAA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAA)
+ )
+ )
+(CHARACTER H FFAB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAB)
+ )
+ )
+(CHARACTER H FFAC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAC)
+ )
+ )
+(CHARACTER H FFAD
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAD)
+ )
+ )
+(CHARACTER H FFAE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAE)
+ )
+ )
+(CHARACTER H FFAF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFAF)
+ )
+ )
+(CHARACTER H FFB0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB0)
+ )
+ )
+(CHARACTER H FFB1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB1)
+ )
+ )
+(CHARACTER H FFB2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB2)
+ )
+ )
+(CHARACTER H FFB3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB3)
+ )
+ )
+(CHARACTER H FFB4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB4)
+ )
+ )
+(CHARACTER H FFB5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB5)
+ )
+ )
+(CHARACTER H FFB6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB6)
+ )
+ )
+(CHARACTER H FFB7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB7)
+ )
+ )
+(CHARACTER H FFB8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB8)
+ )
+ )
+(CHARACTER H FFB9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFB9)
+ )
+ )
+(CHARACTER H FFBA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBA)
+ )
+ )
+(CHARACTER H FFBB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBB)
+ )
+ )
+(CHARACTER H FFBC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBC)
+ )
+ )
+(CHARACTER H FFBD
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBD)
+ )
+ )
+(CHARACTER H FFBE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBE)
+ )
+ )
+(CHARACTER H FFBF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFBF)
+ )
+ )
+(CHARACTER H FFC0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC0)
+ )
+ )
+(CHARACTER H FFC1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC1)
+ )
+ )
+(CHARACTER H FFC2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC2)
+ )
+ )
+(CHARACTER H FFC3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC3)
+ )
+ )
+(CHARACTER H FFC4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC4)
+ )
+ )
+(CHARACTER H FFC5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC5)
+ )
+ )
+(CHARACTER H FFC6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC6)
+ )
+ )
+(CHARACTER H FFC7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC7)
+ )
+ )
+(CHARACTER H FFC8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC8)
+ )
+ )
+(CHARACTER H FFC9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFC9)
+ )
+ )
+(CHARACTER H FFCA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCA)
+ )
+ )
+(CHARACTER H FFCB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCB)
+ )
+ )
+(CHARACTER H FFCC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCC)
+ )
+ )
+(CHARACTER H FFCD
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCD)
+ )
+ )
+(CHARACTER H FFCE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCE)
+ )
+ )
+(CHARACTER H FFCF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFCF)
+ )
+ )
+(CHARACTER H FFD0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD0)
+ )
+ )
+(CHARACTER H FFD1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD1)
+ )
+ )
+(CHARACTER H FFD2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD2)
+ )
+ )
+(CHARACTER H FFD3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD3)
+ )
+ )
+(CHARACTER H FFD4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD4)
+ )
+ )
+(CHARACTER H FFD5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD5)
+ )
+ )
+(CHARACTER H FFD6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD6)
+ )
+ )
+(CHARACTER H FFD7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD7)
+ )
+ )
+(CHARACTER H FFD8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD8)
+ )
+ )
+(CHARACTER H FFD9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFD9)
+ )
+ )
+(CHARACTER H FFDA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDA)
+ )
+ )
+(CHARACTER H FFDB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDB)
+ )
+ )
+(CHARACTER H FFDC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDC)
+ )
+ )
+(CHARACTER H FFDD
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDD)
+ )
+ )
+(CHARACTER H FFDE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDE)
+ )
+ )
+(CHARACTER H FFDF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFDF)
+ )
+ )
+(CHARACTER H FFE0
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE0)
+ )
+ )
+(CHARACTER H FFE1
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE1)
+ )
+ )
+(CHARACTER H FFE2
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE2)
+ )
+ )
+(CHARACTER H FFE3
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE3)
+ )
+ )
+(CHARACTER H FFE4
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE4)
+ )
+ )
+(CHARACTER H FFE5
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE5)
+ )
+ )
+(CHARACTER H FFE6
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE6)
+ )
+ )
+(CHARACTER H FFE7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE7)
+ )
+ )
+(CHARACTER H FFE8
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE8)
+ )
+ )
+(CHARACTER H FFE9
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFE9)
+ )
+ )
+(CHARACTER H FFEA
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEA)
+ )
+ )
+(CHARACTER H FFEB
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEB)
+ )
+ )
+(CHARACTER H FFEC
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEC)
+ )
+ )
+(CHARACTER H FFED
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFED)
+ )
+ )
+(CHARACTER H FFEE
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEE)
+ )
+ )
+(CHARACTER H FFEF
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 1)
+ (SETCHAR H FFEF)
+ )
+ )
+(CHARACTER H 20B9F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 20B9F)
+ )
+ )
+(CHARACTER H 2F833
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 2F833)
+ )
+ )
+(CHARACTER H 24304B
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 3F51)
+ )
+ )
+(CHARACTER H 2431F7
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 3FD7)
+ )
+ )
+(CHARACTER H 48537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 0)
+ (SETCHAR H 2F833)
+ )
+ )
+(CHARACTER H 80537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 3597)
+ )
+ )
+(CHARACTER H 84537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 6A2)
+ )
+ )
+(CHARACTER H 88537F
+ (CHARWD R 1.0)
+ (MAP
+ (SELECTFONT D 2)
+ (SETCHAR H 1DED)
+ )
+ )
diff --git a/Build/source/texk/dvipsk/tfmload.c b/Build/source/texk/dvipsk/tfmload.c
index afc5d803dbf..0b00c809336 100644
--- a/Build/source/texk/dvipsk/tfmload.c
+++ b/Build/source/texk/dvipsk/tfmload.c
@@ -109,7 +109,7 @@ tfmload(register fontdesctype *curfnt)
integer scaledsize;
integer id, nt = 0;
integer nw, hd;
- integer bc, ec;
+ integer bc, ec, direc = -1;
integer nco=0, ncw=0, npc=0, no_repeats = 0;
uinteger *index = NULL;
halfword *chartype = NULL;
@@ -161,18 +161,7 @@ tfmload(register fontdesctype *curfnt)
bc = tfm32(); ec = tfm32();
nw = tfm32();
for (i=0; i<8; i++) li=tfm32();
- if (!noptex && font_level==1 && ec>=0x2E00) {
- curfnt->iswide = 1;
- if (li==5) { /* interpret FONTDIR RT as pTeX vertical writing */
- curfnt->dir = 9;
-#ifdef DEBUG
- if (dd(D_FONTS))
- fprintf_str(stderr,
- "We will interpret font (%s.ofm) direction as pTeX vertical writing.\n",
- curfnt->name);
-#endif /* DEBUG */
- }
- }
+ direc = li;
if ((font_level>1 || hd<2 || bc<0 || ec<0 || nw<0
|| bc>ec+1 || ec>0x10FFFF || nw>0x110000) ||
(font_level==0 && (ec>65535 || nw>65536)))
@@ -294,8 +283,22 @@ tfmload(register fontdesctype *curfnt)
curfnt->chardesc[i].pixelwidth = -((integer)(conv*-li+0.5));
curfnt->chardesc[i].flags = (curfnt->resfont ? EXISTS : 0);
curfnt->chardesc[i].flags2 = EXISTS;
+ if (!noptex && font_level==1 && (i>=0x2E80 && !(0xFB00<=i && i<=0xFB06))) {
+ curfnt->iswide = 1;
+ }
}
if (ec>=256) curfnt->codewidth = 2; /* XXX: 2byte-code can have ec<256 */
+ if (!noptex && font_level==1 && curfnt->iswide == 1) {
+ if (direc==5) { /* interpret FONTDIR RT as pTeX vertical writing */
+ curfnt->dir = 9;
+#ifdef DEBUG
+ if (dd(D_FONTS))
+ fprintf_str(stderr,
+ "We will interpret font (%s.ofm) direction as pTeX vertical writing.\n",
+ curfnt->name);
+#endif /* DEBUG */
+ }
+ }
}
free(chardat);
free(scaled);
diff --git a/Build/source/texk/dvipsk/uptex-upjf2.test b/Build/source/texk/dvipsk/uptex-upjf2.test
new file mode 100755
index 00000000000..944f68d56ff
--- /dev/null
+++ b/Build/source/texk/dvipsk/uptex-upjf2.test
@@ -0,0 +1,26 @@
+#! /bin/sh -vx
+# $Id$
+# Public domain.
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_dvips=$BinDir/dvips$ExeExt
+
+TEXFONTS="./tmp001;$srcdir/testdata"
+SOURCE_DATE_EPOCH=1588474800
+export TEXFONTS SOURCE_DATE_EPOCH
+
+rm -f upjf-g.ofm upjv-g.ofm upjf-r.ofm upjv-r.ofm
+
+rc=0
+
+test -d tmp001 || mkdir -p tmp001
+
+cp $srcdir/testdata/upjf2_full.vf ./tmp001/upjf.vf && \
+cp $srcdir/testdata/upjv2_full.vf ./tmp001/upjv.vf && \
+$_dvips -d 4 $srcdir/testdata/upjf2.dvi -o upjf2.ps -u $srcdir/testdata/upjf.map && \
+mv upjf2.ps upjf2_full.ps || rc=6
+
+
+exit $rc
diff --git a/Build/source/texk/dvipsk/virtualfont.c b/Build/source/texk/dvipsk/virtualfont.c
index b855ba8eb18..41e83a4920e 100644
--- a/Build/source/texk/dvipsk/virtualfont.c
+++ b/Build/source/texk/dvipsk/virtualfont.c
@@ -235,7 +235,7 @@ virtualfont(register fontdesctype *curfnt)
font_level = tfm16();
tfm32(); tfm32(); tfm32(); /* li, hd, bc */
ec = tfm32();
- if (font_level==1 && ec>=0x2E00) /* We interpret the ofm is for pTeX */
+ if (font_level==1 && ec>=0x2E80) /* We interpret the ofm is for pTeX */
curfnt->kind = VF_PTEX;
}
fclose(tfmfile);
@@ -253,7 +253,7 @@ virtualfont(register fontdesctype *curfnt)
if (length<2) badvf("negative length packet");
if (length>65535) badvf("packet too long");
cc = vfquad();
- if (cc>=no_of_chars && cc<MAX_CODE) {
+ if (cc>=no_of_chars && cc<MAX_VF_CODE) {
j = VF_MEM_UNIT * ((integer)(cc/VF_MEM_UNIT) + 1);
curfnt->chardesc = (chardesctype *)xrealloc(curfnt->chardesc,
sizeof(chardesctype)*j);
diff --git a/Build/source/texk/kpathsea/ChangeLog b/Build/source/texk/kpathsea/ChangeLog
index 7f1108ee6c9..65a2e675dd5 100644
--- a/Build/source/texk/kpathsea/ChangeLog
+++ b/Build/source/texk/kpathsea/ChangeLog
@@ -1,3 +1,8 @@
+2024-09-25 Karl Berry <karl@tug.org>
+
+ * texmf.cnf (shell_escape_commands): add latexminted for minted 3.0,
+ after various reviews via tlsecurity, etc.
+
2024-08-19 Karl Berry <karl@freefriends.org>
* tex-file.c (kpathsea_name_ok) <not_ok>: avoid spurious double space
diff --git a/Build/source/texk/kpathsea/texmf.cnf b/Build/source/texk/kpathsea/texmf.cnf
index 5df6bd97f9c..f725e75ecef 100644
--- a/Build/source/texk/kpathsea/texmf.cnf
+++ b/Build/source/texk/kpathsea/texmf.cnf
@@ -653,6 +653,7 @@ extractbb,\
gregorio,\
kpsewhich,\
l3sys-query,\
+latexminted,\
makeindex,\
memoize-extract.pl,\
memoize-extract.py,\
diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.am b/Build/source/texk/texlive/linked_scripts/Makefile.am
index 0bd39fbab96..e15338aae80 100644
--- a/Build/source/texk/texlive/linked_scripts/Makefile.am
+++ b/Build/source/texk/texlive/linked_scripts/Makefile.am
@@ -113,6 +113,8 @@ texmf_other_scripts = \
bib2gls/convertgls2bib.sh \
bibcop/bibcop.pl \
bibtexperllibs/ltx2unitxt \
+ bookshelf/bookshelf-listallfonts \
+ bookshelf/bookshelf-mkfontsel \
bundledoc/arlatex \
bundledoc/bundledoc \
cachepic/cachepic.tlu \
@@ -191,6 +193,7 @@ texmf_other_scripts = \
memoize/memoize-extract.pl \
memoize/memoize-extract.py \
mf2pt1/mf2pt1.pl \
+ minted/latexminted.py \
mkgrkindex/mkgrkindex \
mkjobtexmf/mkjobtexmf.pl \
mkpic/mkpic \
@@ -223,6 +226,7 @@ texmf_other_scripts = \
runtexshebang/runtexshebang.lua \
spix/spix.py \
splitindex/splitindex.pl \
+ sqltex/sqltex \
srcredact/srcredact.pl \
sty2dtx/sty2dtx.pl \
svn-multi/svn-multi.pl \
diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.in b/Build/source/texk/texlive/linked_scripts/Makefile.in
index 04b5c6d629b..ba8892a60ca 100644
--- a/Build/source/texk/texlive/linked_scripts/Makefile.in
+++ b/Build/source/texk/texlive/linked_scripts/Makefile.in
@@ -333,6 +333,8 @@ texmf_other_scripts = \
bib2gls/convertgls2bib.sh \
bibcop/bibcop.pl \
bibtexperllibs/ltx2unitxt \
+ bookshelf/bookshelf-listallfonts \
+ bookshelf/bookshelf-mkfontsel \
bundledoc/arlatex \
bundledoc/bundledoc \
cachepic/cachepic.tlu \
@@ -411,6 +413,7 @@ texmf_other_scripts = \
memoize/memoize-extract.pl \
memoize/memoize-extract.py \
mf2pt1/mf2pt1.pl \
+ minted/latexminted.py \
mkgrkindex/mkgrkindex \
mkjobtexmf/mkjobtexmf.pl \
mkpic/mkpic \
@@ -443,6 +446,7 @@ texmf_other_scripts = \
runtexshebang/runtexshebang.lua \
spix/spix.py \
splitindex/splitindex.pl \
+ sqltex/sqltex \
srcredact/srcredact.pl \
sty2dtx/sty2dtx.pl \
svn-multi/svn-multi.pl \
diff --git a/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-listallfonts b/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-listallfonts
new file mode 100755
index 00000000000..20ae696fd63
--- /dev/null
+++ b/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-listallfonts
@@ -0,0 +1,271 @@
+#!/usr/bin/env perl
+#
+=pod
+
+=head1 NAME
+
+bookshelf-listallfonts - list all fonts known to LuaTeX with "interesting" features
+
+=head1 SYNOPSIS
+
+bookshelf-listallfonts [-d] [-f FEATURES_FILE] [-x EXCLUDED_PATTERNS_FILE]
+
+bookshelf-listallfonts -h
+
+bookshelf-listallfonts -v
+
+bookshelf-listallfonts -m
+
+=head1 DESCRIPTION
+
+List all fonts known to LuaTeX adding "interesting" features to the
+listing.
+
+The script queries luaotfload databases and outputs the list of fonts
+and features as a tab-separated stream with two field: font
+name+feature name, and LuaTeX loading command. This form is suitable
+for L<mkfontsel.pl(1)> command from the I<bookshelf> package.
+
+We always include default features, C<+clig;+liga;+tlig>.
+
+It is recommended to issue
+
+ luaotfload-tool --update --force
+
+before running the script.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-d>
+
+Print debug information on the standard output.
+
+=item B<-f> I<FEATURES_FILE>
+
+Use patterns in the I<FEATURES> file instead of the default ones.
+
+=item B<-x> I<EXCLUDED_PATTERNS_FILE>
+
+Exclude patterns (font paths and features or combinations) listed
+in I<EXCLUDED_PATTERNS_FILE>.
+
+=item B<-v>
+
+Print version information
+
+=item B<-h>
+
+Print usage information
+
+=item B<-m>
+
+Print manual page
+
+=back
+
+=head1 AUTHOR
+
+Boris Veytsman, 2024
+
+=head1 LICENSE
+
+LPPL 1.3c
+
+=cut
+
+use strict;
+use Getopt::Long;
+use Pod::Usage;
+use open qw( :std :encoding(UTF-8) );
+my $VERSION = "1.0";
+my $featuresFile ="";
+my $excludedPatternsFile = "";
+my $DEBUG=0;
+my $help=0;
+my $man=0;
+my $vrs=0;
+
+GetOptions(
+ "debug" => \$DEBUG,
+ "features|f=s" => \$featuresFile,
+ "excluded|x=s" => \$excludedPatternsFile,
+ "help|?" => \$help,
+ "man" => \$man,
+ "version" => \$vrs
+ ) or pod2usage(2);
+
+pod2usage(1) if $help;
+pod2usage(-exitval => 0, -verbose=>2) if $man;
+die ("$0, version $VERSION, License: LPPL 1.3c\n") if $vrs;
+
+
+my @features;
+if ($featuresFile) {
+ open(FEATURES, $featuresFile) or die ("Cannot open file $featuresFile\n");
+ while (<FEATURES>) {
+ chomp;
+ if (length($_)) {
+ push @features, $_;
+ }
+ }
+ close FEATURES;
+} else {
+ @features = qw(
+ ^hist$
+ ^onum$
+ ^pcap$
+ ^smcp$
+ ^ss
+ ^swsh$
+ ^titl$
+ ^unic$
+ );
+}
+
+my @excluded;
+if ($excludedPatternsFile) {
+ open(PATTERNS, $excludedPatternsFile) or die ("Cannot open file $excludedPatternsFile\n");
+ while (<PATTERNS>) {
+ chomp;
+ if (length($_)) {
+ push @excluded, $_;
+ }
+ }
+ close PATTERNS;
+} else {
+ @excluded = qw(
+ Alegreya.*\+ss02
+ Spectral.*\+ss04
+ Hans_Holbein
+ Megazoid-Shade
+ HEJI2Text
+ NotoColorEmoji
+ GimletXRay-VF
+ MegabaseCore
+ PappardelleV2
+ countriesofeurope
+ drmdoz
+ drmsy
+ drmtc
+ drmfigs
+ drmgrk
+ smf
+ SimpleIcons
+ Skak
+ FontAwesome
+ InputCipher
+ FdSymbol
+ greciliae
+ blex\.ttf
+ blsy\.ttf
+ rblmi\.ttf
+ emo-lingchi
+ MnSymbol
+ MdSymbol
+ dantelogo
+ emmentaler
+ marvosym
+ Asap-Symbol
+ metsymb
+ AlgolRevived
+ P22FraJenPeo.otf
+ LTCFlueronsGranjon
+ LTCArchiveOrn
+ SVRsymbols
+ LTCHalloweenOrnaments
+ BradleyInitialsDJRLayers-Frame
+ P22CezanSwa
+ P22GaugnXtr
+ P22CezanSkt
+ P22CezanLig
+ P22DeaPro.*\+ss07
+ BradleyInitialsDJRLayers-Background
+ Junicode.*\+ss12
+ Junicode.*\+ss13
+ Junicode.*\+ss14
+ QTDingBits
+ Math-Companion
+ Script-Companion
+ TwemojiMozilla
+ NAMU-Tryzub
+ \/Fonts\/Supplemental\/
+ NotoSansMyanmar\.ttc
+ );
+}
+
+my $standardFeatures="+clig;+liga;+tlig";
+
+open(FONTS,
+ 'luaotfload-tool --list="plainname" --fields="fullpath,format,subfont"|')
+ or die ("Cannot run luaotfload-tool\n");
+while (<FONTS>) {
+ chomp;
+ if (/^\s*$/) {
+ next;
+ }
+ my ($plainname, $fullpath, $format, $subfont) = split /\t/;
+ if ($DEBUG) {
+ print STDERR "Font: $plainname\n";
+ }
+ my $goodFont=1;
+ foreach my $excl (@excluded) {
+ if ($fullpath =~ m/$excl/) {
+ $goodFont=0;
+ if ($DEBUG) {
+ print STDERR " Font $plainname is excluded by pattern $excl\n";
+ }
+ last;
+ }
+ }
+ if (!$goodFont) {
+ next;
+ }
+ my $loadcommand = "[".$fullpath."]";
+ if ($format eq 'ttc') {
+ $loadcommand .= "(".($subfont-1).")";
+ }
+ $loadcommand .= ":$standardFeatures";
+ print "$plainname\t$loadcommand\n";
+ if ($format eq 'ttc') {
+ next; # WE do not extract features for TTC fonts
+ }
+
+ open (FEATURES, "otfinfo -f '$fullpath' |");
+ while (<FEATURES>) {
+ chomp;
+ my ($feature, $featurename) = split /\t/;
+ my $loadcommand1 = $loadcommand . ";+$feature";
+ my $goodFeature=0;
+ foreach my $pattern (@features) {
+ if ($feature =~ m/$pattern/) {
+ $goodFeature=1;
+ last;
+ }
+ }
+ if (!$goodFeature) {
+ next;
+ }
+
+ foreach my $excl (@excluded) {
+ if ($loadcommand1 =~ m/$excl/) {
+ $goodFeature=0;
+ if ($DEBUG) {
+ print STDERR
+ " Feature $featurename is excluded by pattern $excl\n";
+ }
+ last;
+ }
+
+ }
+ if ($goodFeature) {
+ print "$plainname; $featurename\t$loadcommand1\n";
+ }
+ }
+
+ close FEATURES;
+
+}
+close FONTS;
+
diff --git a/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-mkfontsel b/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-mkfontsel
new file mode 100755
index 00000000000..fc5c813f4d4
--- /dev/null
+++ b/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-mkfontsel
@@ -0,0 +1,92 @@
+#!/usr/bin/env perl
+#
+#
+=pod
+
+=head1 NAME
+
+bookshelf-mkfontsel - a script to populate C<fontsel> directory and create C<pickfont.tex> file for I<bookshelf> package
+
+=head1 SYNOPSIS
+
+bookshelf-mkfontsel FONTFILE
+
+=head1 DESCRIPTION
+
+Create and populate fontsel directory from the file
+produced by L<listallfonts.pl(1)> script, and create
+C<pickfont.tex> file. Used by
+I<bookshelf> package.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-v>
+
+Print version information
+
+=item B<-h>
+
+Print usage information
+
+=item B<-m>
+
+Print manual page
+
+=back
+
+=head1 AUTHOR
+
+Boris Veytsman, 2024
+
+=head1 LICENSE
+
+LPPL 1.3c
+
+=cut
+
+
+use strict;
+use Getopt::Long;
+use Pod::Usage;
+use open qw( :std :encoding(UTF-8) );
+my $VERSION = "1.0";
+
+my $help=0;
+my $man=0;
+my $vrs=0;
+
+GetOptions(
+ "help|?" => \$help,
+ "man" => \$man,
+ "version" => \$vrs
+ ) or pod2usage(2);
+
+pod2usage(1) if $help;
+pod2usage(-exitval => 0, -verbose=>2) if $man;
+die ("$0, version $VERSION, License: LPPL 1.3c\n") if $vrs;
+
+
+
+
+`mkdir -p fontsel`;
+my $i=1;
+while(<>) {
+ chomp;
+ if (/^.*#/) {
+ next;
+ }
+ my ($name, $command) = split /\t/;
+ open(RES, ">fontsel/$i.tex");
+ print RES "\\font\\SILmfont={$command}\\SILmfont\n";
+ print RES "\\def\\SILmfontname{$name}%\n";
+ close RES;
+ $i++;
+}
+$i--;
+open(RES, ">pickfont.tex");
+print RES "\\setcounter{SIL\@maxfont}{$i}\n";
+close RES;
+
+
diff --git a/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua b/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua
index bb53a2ce55a..675806dd579 100644
--- a/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua
+++ b/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua
@@ -25,7 +25,7 @@ for those people who are interested.
--]]
-- Version information
-release_date = "2024-05-27"
+release_date = "2024-10-08"
-- File operations are aided by the LuaFileSystem module
local lfs = require("lfs")
@@ -128,7 +128,7 @@ if forcecheckepoch then
end
if forcedocepoch then
if match(typesetexe,"luatex") or match(typesetexe,"lualatex") then
- typesetopts = typsetopts .. " -utc"
+ typesetopts = typesetopts .. " -utc"
end
end
diff --git a/Build/source/texk/texlive/linked_scripts/minted/latexminted.py b/Build/source/texk/texlive/linked_scripts/minted/latexminted.py
new file mode 100755
index 00000000000..3c1584ea32f
--- /dev/null
+++ b/Build/source/texk/texlive/linked_scripts/minted/latexminted.py
@@ -0,0 +1,359 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2024, Geoffrey M. Poore
+# All rights reserved.
+#
+# Licensed under the LaTeX Project Public License version 1.3c:
+# https://www.latex-project.org/lppl.txt
+#
+
+
+'''
+This Python executable is intended for installation within a TeX distribution,
+along with Python wheels for the following Python packages:
+
+ * latexminted: https://pypi.org/project/latexminted/
+
+ * latexrestricted: https://pypi.org/project/latexrestricted/
+
+ * latex2pydata: https://pypi.org/project/latex2pydata/
+
+ * Pygments: https://pypi.org/project/Pygments/
+
+The combined executable plus wheels provide everything that is needed for the
+Python side of the minted LaTeX package. No additional Python libraries are
+required.
+
+The wheels require Python >= 3.8. If this executable is launched with an
+earlier Python version, then it will attempt to locate a more recent Python
+installation and run itself with that Python version in a subprocess. The
+search for more recent Python versions looks for executables of the form
+`python3.x` on PATH.
+
+If the latexminted Python package is installed separately, outside TeX, then
+it will create a separate `latexminted` executable as part of the installation
+process. That makes it possible to install latexminted and dependencies
+separately and then customize Pygments with additional packages that provide
+plugins. However, running that separate `latexminted` executable is not
+straightforward under Windows. Under Windows, if this executable finds a
+suitable `latexminted` executable elsewhere, outside a TeX installation, then
+this executable will run that separate `latexminted` executable in a
+subprocess and exit. There are two reasons for this approach:
+
+ 1. Under Windows with TeX Live, the default restricted shell escape can only
+ run executables such as `latexminted` that are part of the TeX
+ installation; the executable that runs is not the first executable on
+ PATH. That is part of TeX Live's security measures to prevent running
+ executables in the current working directory, which is typically writable
+ by LaTeX and is the first place Windows checks when searching for
+ executables. This script and the latexrestricted Python package enforce
+ equivalent security, but do so in a less restrictive manner by expanding
+ executable names into executable paths with Python's `shutil.which()` and
+ then comparing the result with locations writable by LaTeX.
+
+ 2. Under non-Windows operating systems, it is possible to modify PATH so that
+ the desired `latexminted` executable is first. Under Windows, the system
+ PATH is prepended to the user PATH, so a system-wide TeX installation will
+ prevent a user-installed `latexminted` executable from being accessible.
+
+Requirements for locating and running a separate `latexminted` executable
+under Windows:
+
+ * The separate executable must be the first `latexminted.exe` found on PATH,
+ or it must be the first `latexminted.exe` on PATH that is located under
+ the user home directory.
+
+ * The separate executable must be outside a TeX installation. There is a
+ check for a `tex.exe` executable in the same directory as
+ `latexminted.exe`. There is a check for the case-insensitive strings
+ "texlive", "miktex", and "tinytex" in the path to the `latexminted`
+ executable. With TeX Live, the path to the `latexminted` executable is
+ also compared to the environment variable `SELFAUTOLOC`.
+
+ * The separate executable must be outside the current working directory,
+ TEXMFOUTPUT, and TEXMF_OUTPUT_DIRECTORY.
+
+ * The current directory, TEXMFOUTPUT, and TEXMF_OUTPUT_DIRECTORY cannot be
+ subdirectories of the directory in which the executable is located.
+'''
+
+
+__version__ = '0.1.0'
+
+
+import os
+import pathlib
+import platform
+import shutil
+import subprocess
+import sys
+
+
+
+
+# This is an abbreviated variant of `AnyPath` from latexrestricted:
+# https://github.com/gpoore/latexrestricted/blob/main/latexrestricted/_anypath.py
+class Path(type(pathlib.Path())):
+ __slots__ = (
+ '_cache_key',
+ )
+
+ if sys.version_info[:2] < (3, 9):
+ def is_relative_to(self, other):
+ try:
+ self.relative_to(other)
+ return True
+ except ValueError:
+ return False
+
+ @property
+ def cache_key(self):
+ try:
+ return self._cache_key
+ except AttributeError:
+ self._cache_key = (type(self), self)
+ return self._cache_key
+
+ _resolved_set = set()
+
+ def resolve(self):
+ resolved = super().resolve()
+ self._resolved_set.add(resolved.cache_key)
+ return resolved
+
+ def is_resolved(self) -> bool:
+ return self.cache_key in self._resolved_set
+
+
+
+
+# Define function that determines whether subprocess executable paths are
+# permitted.
+prohibited_path_roots = set()
+prohibited_path_roots.add(Path.cwd())
+env_TEXMFOUTPUT = os.getenv('TEXMFOUTPUT')
+env_TEXMF_OUTPUT_DIRECTORY = os.getenv('TEXMF_OUTPUT_DIRECTORY')
+for env_var in (env_TEXMFOUTPUT, env_TEXMF_OUTPUT_DIRECTORY):
+ if env_var:
+ env_var_path = Path(env_var)
+ prohibited_path_roots.add(env_var_path)
+ prohibited_path_roots.add(env_var_path.resolve())
+
+def is_permitted_executable_path(executable_path, executable_path_resolved):
+ if not executable_path_resolved.is_resolved():
+ raise Exception('Second argument must be resolved path')
+ if any(e.is_relative_to(p) or p.is_relative_to(e)
+ for e in set([executable_path.parent, executable_path_resolved.parent])
+ for p in prohibited_path_roots):
+ return False
+ return True
+
+# TeX Live allows setting `TEXMFOUTPUT` in LaTeX configuration.
+# Retrieving that value with kpsewhich follows the approach in latexrestricted:
+# https://github.com/gpoore/latexrestricted/blob/main/latexrestricted/_latex_config.py
+env_SELFAUTOLOC = os.getenv('SELFAUTOLOC')
+env_TEXSYSTEM = os.getenv('TEXSYSTEM')
+if not env_TEXMFOUTPUT and env_SELFAUTOLOC and (not env_TEXSYSTEM or env_TEXSYSTEM.lower() != 'miktex'):
+ if platform.system() == 'Windows':
+ # Under Windows, shell escape executables will often be launched with
+ # the TeX Live `runscript.exe` executable wrapper. This overwrites
+ # `SELFAUTOLOC` from TeX with the location of the wrapper, so
+ # `SELFAUTOLOC` may not be correct.
+ which_tlmgr = shutil.which('tlmgr') # No `.exe`; likely `.bat`
+ if not which_tlmgr:
+ sys.exit('Failed to find TeX Live "tlmgr" executable on PATH')
+ which_tlmgr_resolved = Path(which_tlmgr).resolve()
+ texlive_bin_path = which_tlmgr_resolved.parent
+ # Make sure executable is *.exe, not *.bat or *.cmd:
+ # https://docs.python.org/3/library/subprocess.html#security-considerations
+ which_kpsewhich = shutil.which('kpsewhich.exe', path=str(texlive_bin_path))
+ if not which_kpsewhich:
+ sys.exit('Failed to find a TeX Live "tlmgr" executable with accompanying "kpsewhich" executable on PATH')
+ which_kpsewhich_path = Path(which_kpsewhich)
+ which_kpsewhich_resolved = which_kpsewhich_path.resolve()
+ if not texlive_bin_path == which_kpsewhich_resolved.parent:
+ sys.exit(' '.join([
+ '"tlmgr" executable from PATH resolved to "{}" '.format(which_tlmgr_resolved.as_posix()),
+ 'while "kpsewhich" resolved to "{}";'.format(which_kpsewhich_resolved.as_posix()),
+ '"tlmgr" and "kpsewhich" should be in the same location',
+ ]))
+ if not which_kpsewhich_resolved.name.lower().endswith('.exe'):
+ sys.exit(' '.join([
+ 'Executable "kpsewhich" resolved to "{}",'.format(which_kpsewhich_resolved.as_posix()),
+ 'but *.exe is required',
+ ]))
+ else:
+ which_kpsewhich = shutil.which('kpsewhich', path=env_SELFAUTOLOC)
+ if not which_kpsewhich:
+ sys.exit(' '.join([
+ 'Environment variable SELFAUTOLOC has value "{}",'.format(env_SELFAUTOLOC),
+ 'but a "kpsewhich" executable was not found at that location',
+ ]))
+ which_kpsewhich_path = Path(which_kpsewhich)
+ which_kpsewhich_resolved = which_kpsewhich_path.resolve()
+ if not is_permitted_executable_path(which_kpsewhich_path, which_kpsewhich_resolved):
+ # As in the latexrestricted case, this doesn't initially check for the
+ # TeX Live scenario where `TEXMFOUTPUT` is set in a `texmf.cnf` config
+ # file to a location that includes the `kpsewhich` executable. There
+ # isn't a good way to get the value of `TEXMFOUTPUT` without running
+ # `kpsewhich` in that case.
+ sys.exit(
+ 'Executable "kpsewhich" is located under the current directory, TEXMFOUTPUT, or '
+ 'TEXMF_OUTPUT_DIRECTORY, or one of these locations is under the same directory as the executable'
+ )
+ kpsewhich_cmd = [which_kpsewhich_resolved.as_posix(), '--var-value', 'TEXMFOUTPUT']
+ try:
+ kpsewhich_proc = subprocess.run(kpsewhich_cmd, shell=False, capture_output=True)
+ except PermissionError:
+ sys.exit('Insufficient permission to run "{}"'.format(which_kpsewhich_resolved.as_posix()))
+ kpsewhich_TEXMFOUTPUT = kpsewhich_proc.stdout.decode(sys.stdout.encoding) or None
+ if kpsewhich_TEXMFOUTPUT:
+ kpsewhich_TEXMFOUTPUT_path = Path(kpsewhich_TEXMFOUTPUT)
+ prohibited_path_roots.add(kpsewhich_TEXMFOUTPUT_path)
+ prohibited_path_roots.add(kpsewhich_TEXMFOUTPUT_path.resolve())
+ if not is_permitted_executable_path(which_kpsewhich_path, which_kpsewhich_resolved):
+ # It is now possible to check for the TeX Live scenario where
+ # `TEXMFOUTPUT` is set in a `texmf.cnf` config file to a location that
+ # includes the `kpsewhich` executable. Giving an error message after
+ # already running `kpsewhich` isn't ideal, but there isn't a good
+ # alternative. As in the latexrestricted case, the impact on overall
+ # security is negligible because an unsafe value of `TEXMFOUTPUT`
+ # means that all TeX-related executables are potentially compromised.
+ sys.exit(
+ 'Executable "kpsewhich" is located under the current directory, TEXMFOUTPUT, or '
+ 'TEXMF_OUTPUT_DIRECTORY, or one of these locations is under the same directory as the executable'
+ )
+
+
+
+
+# If Python version is < 3.8, try to locate a more recent version and then
+# relaunch this script with that Python version in a subprocess.
+if sys.version_info[:2] < (3, 8):
+ for minor_version in range(13, 7, -1):
+ if platform.system() == 'Windows':
+ # Batch files must be prohibited:
+ # https://docs.python.org/3/library/subprocess.html#security-considerations
+ which_python = shutil.which('python3.{}.exe'.format(minor_version))
+ else:
+ which_python = shutil.which('python3.{}'.format(minor_version))
+ if which_python:
+ which_python_path = Path(which_python)
+ which_python_resolved = which_python_path.resolve()
+ if platform.system() == 'Windows' and not which_python_resolved.name.lower().endswith('.exe'):
+ continue
+ if is_permitted_executable_path(which_python_path, which_python_resolved):
+ python_cmd = [which_python_resolved.as_posix(), __file__] + sys.argv[1:]
+ python_proc = subprocess.run(python_cmd, shell=False, capture_output=True)
+ sys.stderr.buffer.write(python_proc.stderr)
+ sys.stdout.buffer.write(python_proc.stdout)
+ sys.exit(python_proc.returncode)
+ sys.exit('latexminted requires Python >= 3.8, but a compatible Python executable was not found on PATH')
+
+
+
+
+# Check for required wheel dependencies and add them to Python's `sys.path`.
+script_resolved = Path(__file__).resolve()
+required_wheel_packages = (
+ 'latexminted',
+ 'latexrestricted',
+ 'latex2pydata',
+ 'pygments',
+)
+wheel_paths = [p for p in script_resolved.parent.glob('*.whl') if p.name.startswith(required_wheel_packages)]
+if not wheel_paths:
+ sys.exit('latexminted failed to find bundled wheels *.whl')
+for pkg in required_wheel_packages:
+ if not any(whl.name.startswith(pkg) for whl in wheel_paths):
+ sys.exit('latexminted failed to find all required bundled wheels *.whl')
+for wheel_path in wheel_paths:
+ sys.path.insert(0, wheel_path.as_posix())
+
+
+
+
+# Under Windows, check PATH for a `latexminted` executable outside a TeX
+# installation. If a `latexminted` executable is found in a suitable location
+# with sufficient precedence, run it in a subprocess and exit.
+#
+# The environment variable `LATEXMINTED_SUBPROCESS` is used to prevent an
+# endless recursion of subprocesses in the event that a `latexminted`
+# executable *inside* a TeX installation somehow manages to pass the tests for
+# an executable *outside* a TeX installation.
+if platform.system() == 'Windows' and not os.getenv('LATEXMINTED_SUBPROCESS'):
+ os.environ['LATEXMINTED_SUBPROCESS'] = '1'
+ fallback_path_search = True
+ if env_SELFAUTOLOC:
+ env_SELFAUTOLOC_resolved = Path(env_SELFAUTOLOC).resolve()
+ else:
+ env_SELFAUTOLOC_resolved = None
+ which_latexminted = shutil.which('latexminted.exe')
+ if which_latexminted:
+ which_latexminted_path = Path(which_latexminted)
+ which_latexminted_resolved = which_latexminted_path.resolve()
+ if not which_latexminted_resolved.name.lower().endswith('.exe'):
+ sys.exit(' '.join([
+ 'Executable "latexminted" resolved to "{}",'.format(which_latexminted_resolved.as_posix()),
+ 'but *.exe is required',
+ ]))
+ if which_latexminted_resolved == script_resolved:
+ pass
+ elif (which_latexminted_resolved.parent / 'tex.exe').exists():
+ pass
+ elif any(x in which_latexminted_resolved.as_posix().lower() for x in ('texlive', 'miktex', 'tinytex')):
+ pass
+ elif env_SELFAUTOLOC_resolved and which_latexminted_resolved.is_relative_to(env_SELFAUTOLOC_resolved):
+ pass
+ elif is_permitted_executable_path(which_latexminted_path, which_latexminted_resolved):
+ latexminted_cmd = [which_latexminted_resolved.as_posix()] + sys.argv[1:]
+ latexminted_proc = subprocess.run(latexminted_cmd, shell=False, capture_output=True)
+ sys.stderr.buffer.write(latexminted_proc.stderr)
+ sys.stdout.buffer.write(latexminted_proc.stdout)
+ sys.exit(latexminted_proc.returncode)
+ else:
+ # If there was a `latexminted` executable on PATH outside a TeX
+ # installation, but it wasn't permitted due to its location, don't
+ # perform fallback search.
+ fallback_path_search = False
+ if fallback_path_search:
+ # Windows appends user PATH to system PATH, so the system PATH may
+ # prevent finding a user installation of `latexminted`. Search
+ # through PATH elements under user home directory to check for
+ # `latexminted.exe` outside a TeX installation.
+ home_path = Path.home()
+ env_PATH = os.environ.get('PATH', '')
+ for path_elem in env_PATH.split(os.pathsep):
+ if not path_elem or not Path(path_elem).is_relative_to(home_path):
+ continue
+ which_latexminted = shutil.which('latexminted.exe', path=path_elem)
+ if not which_latexminted:
+ continue
+ which_latexminted_path = Path(which_latexminted)
+ which_latexminted_resolved = which_latexminted_path.resolve()
+ if which_latexminted_resolved == script_resolved:
+ break
+ elif (which_latexminted_resolved.parent / 'tex.exe').exists():
+ break
+ elif any(x in which_latexminted_resolved.as_posix().lower() for x in ('texlive', 'miktex', 'tinytex')):
+ break
+ elif env_SELFAUTOLOC_resolved and which_latexminted_resolved.is_relative_to(env_SELFAUTOLOC_resolved):
+ break
+ elif is_permitted_executable_path(which_latexminted_path, which_latexminted_resolved):
+ latexminted_cmd = [which_latexminted_resolved.as_posix()] + sys.argv[1:]
+ try:
+ latexminted_proc = subprocess.run(latexminted_cmd, shell=False, capture_output=True)
+ except PermissionError:
+ break
+ sys.stderr.buffer.write(latexminted_proc.stderr)
+ sys.stdout.buffer.write(latexminted_proc.stdout)
+ sys.exit(latexminted_proc.returncode)
+ else:
+ break
+
+
+
+
+from latexminted.cmdline import main
+main()
diff --git a/Build/source/texk/texlive/linked_scripts/scripts.lst b/Build/source/texk/texlive/linked_scripts/scripts.lst
index 04eacde6e68..7656e5c30c8 100644
--- a/Build/source/texk/texlive/linked_scripts/scripts.lst
+++ b/Build/source/texk/texlive/linked_scripts/scripts.lst
@@ -54,6 +54,8 @@ bib2gls/bib2gls.sh
bib2gls/convertgls2bib.sh
bibcop/bibcop.pl
bibtexperllibs/ltx2unitxt
+bookshelf/bookshelf-listallfonts
+bookshelf/bookshelf-mkfontsel
bundledoc/arlatex
bundledoc/bundledoc
cachepic/cachepic.tlu
@@ -132,6 +134,7 @@ memoize/memoize-clean.py
memoize/memoize-extract.pl
memoize/memoize-extract.py
mf2pt1/mf2pt1.pl
+minted/latexminted.py
mkgrkindex/mkgrkindex
mkjobtexmf/mkjobtexmf.pl
mkpic/mkpic
@@ -164,6 +167,7 @@ rubik/rubikrotation.pl
runtexshebang/runtexshebang.lua
spix/spix.py
splitindex/splitindex.pl
+sqltex/sqltex
srcredact/srcredact.pl
sty2dtx/sty2dtx.pl
svn-multi/svn-multi.pl
diff --git a/Build/source/texk/texlive/linked_scripts/sqltex/sqltex b/Build/source/texk/texlive/linked_scripts/sqltex/sqltex
new file mode 100755
index 00000000000..ea612c790f2
--- /dev/null
+++ b/Build/source/texk/texlive/linked_scripts/sqltex/sqltex
@@ -0,0 +1,1381 @@
+#!/usr/bin/env perl
+
+# To disable support for the --configfile option, set the value below to 0.
+$main::ext_cfgfile_allowed = 1;
+
+################################################################################
+#
+# SQLTeX - SQL preprocessor for Latex
+#
+# File: sqltex
+# =====
+#
+# Purpose: This script is a preprocessor for LaTeX. It reads a LaTeX file
+# ======== containing SQL commands, and replaces them their values.
+#
+# This software is subject to the terms of the LaTeX Project Public License;
+# see http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html.
+#
+# Copyright: (c) 2001-2024, Oscar van Eijk, Oveas Functionality Provider
+# ========== oscar@oveas.com
+# This software is subject to the terms of the LaTeX Project Public License;
+# see http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
+#
+# History:
+# ========
+# v1.3 Mar 16, 2001 (Initial release)
+# v1.4 May 2, 2002
+# v1.4.1 Feb 15, 2005
+# v1.5 Nov 23, 2007
+# v2.0 Jan 12, 2016
+# v2.1 Jan 21, 2022
+# v2.1-1 Apr 19, 2022 (test version for MSSQL, no official release)
+# v2.1-2 Jun 25, 2023 (test version parameter in sql_setparams(), no official release)
+# v2.1-3 Nov 30, 2023 (test version \sqlif-\sqlendif & \sqlsystem, no official release)
+# v2.2 Jul 31, 2024
+# v3.0 Sep 20, 202x
+# Refer to the documentation for changes per release
+#
+# TODO:
+# =====
+# Code is getting messy - too many globals: rewrite required
+#
+################################################################################
+#
+#use strict;
+use DBI;
+use Getopt::Long;
+Getopt::Long::Configure ("bundling");
+use Cwd;
+use feature 'state';
+
+$main::ReadKey_available = eval
+{
+ require Term::ReadKey;
+ Term::ReadKey->import();
+ 1;
+};
+
+#####
+# Find out if any command-line options have been given
+# Parse them using 'Getopt'
+#
+sub parse_options {
+
+ $main::NULLallowed = 0;
+
+ if (!GetOptions('help|h|?' => \$main::options{'h'}
+ , 'configfile|c=s' => \$main::options{'c'}
+ , 'replacementfile|r=s' => \$main::options{'r'}
+ , 'no-replacementfile|R' => \$main::options{'R'}
+ , 'output|o=s' => \$main::options{'o'}
+ , 'skip-empty-lines|-S' => \$main::options{'S'}
+ , 'write-comments|-C' => \$main::options{'C'}
+ , 'filename-extend|e=s' => \$main::options{'e'}
+ , 'file-extension|E=s' => \$main::options{'E'}
+ , 'sqlserver|s=s' => \$main::options{'s'}
+ , 'username|U=s' => \$main::options{'U'}
+ , 'password|P:s' => \$main::options{'P'}
+ , 'null-allowed|N' => \$main::options{'N'}
+ , 'version|V' => \$main::options{'V'}
+ , 'force|f' => \$main::options{'f'}
+ , 'quiet|q' => \$main::options{'q'}
+ , 'multidoc-numbered|m' => \$main::options{'m'}
+ , 'multidoc-named|M' => \$main::options{'M'}
+ , 'prefix|p=s' => \$main::options{'p'}
+ , 'use-local-config|l' => \$main::options{'l'}
+ , 'updates|u' => \$main::options{'u'}
+ )) {
+ print "usage: sqltex [options] <file[.$main::configuration{'texex'}]> [parameter...]\n"
+ . " type \"sqltex --help\" for help\n";
+ exit(1);
+ }
+
+ if (defined $main::options{'h'}) {
+ &print_help;
+ exit(0);
+ }
+ if (defined $main::options{'V'}) {
+ &print_version;
+ exit(0);
+ }
+
+ my $optcheck = 0;
+ $optcheck++ if (defined $main::options{'E'});
+ $optcheck++ if (defined $main::options{'e'});
+ $optcheck++ if (defined $main::options{'o'});
+ die ("options \"-E\", \"-e\" and \"-o\" cannot be combined\n") if ($optcheck > 1);
+
+ $optcheck = 0;
+ $optcheck++ if (defined $main::options{'m'});
+ $optcheck++ if (defined $main::options{'M'});
+ $optcheck++ if (defined $main::options{'o'});
+ die ("options \"-m\", \"-M\" and \"-o\" cannot be combined\n") if ($optcheck > 1);
+
+ $optcheck = 0;
+ $optcheck++ if (defined $main::options{'r'});
+ $optcheck++ if (defined $main::options{'R'});
+ die ("options \"-r\" and \"-R\" cannot be combined\n") if ($optcheck > 1);
+
+ $main::NULLallowed = 1 if (defined $main::options{'N'});
+ $main::configuration{'cmd_prefix'} = $main::options{'p'} if (defined $main::options{'p'});
+
+ $main::multidoc_cnt = 0;
+ $main::multidoc = (defined $main::options{'m'} || defined $main::options{'M'});
+ $main::multidoc_id = '';
+
+ if ($main::multidoc) {
+ $main::multidoc_id = '_#M#';
+ if (defined $main::options{'M'}) {
+ $main::multidoc_id = '_#P#'
+ }
+ }
+
+ if (defined $main::options{'l'}) {
+ warn "Option '-l' is obsolete, use '-c <location>' instead";
+ delete $main::options{'l'};
+ }
+}
+
+#####
+# Print the Usage: line on errors and after the '-h' switch
+#
+sub short_help ($) {
+ my $onerror = shift;
+ my $helptext = "usage: sqltex [options] <file[.$main::configuration{'texex'}]> [parameter...]\n";
+ $helptext .= " type \"sqltex -h\" for help\n" if ($onerror);
+ return ($helptext);
+}
+
+
+#####
+# Print full help and after the '-h' switch
+#
+sub print_help {
+ my $helptext = &short_help (0);
+
+ $helptext .= " Options:\n";
+ if ($main::ext_cfgfile_allowed) {
+ $helptext .= " --configfile <file>\n";
+ $helptext .= " -c <file>\n";
+ $helptext .= " SQLTeX configuration file.\n";
+ $helptext .= " Default is \'$main::config_location/SQLTeX.cfg\'.\n\n";
+ }
+ $helptext .= " --file-extension <string>\n";
+ $helptext .= " -E <string>\n";
+ $helptext .= " replace input file extension in outputfile:\n";
+ $helptext .= " \'input.tex\' will be \'input.string\'\n";
+ $helptext .= " For further notes, see option \'--filename-extend\' below\n\n";
+
+ $helptext .= " --null-allowed\n";
+ $helptext .= " -N\n";
+ $helptext .= " NULL return values allowed. By default SQLTeX exits if a\n";
+ $helptext .= " query returns an empty set\n\n";
+
+ $helptext .= " --password [password]\n";
+ $helptext .= " -P [password]\n";
+ $helptext .= " database password. The value is optional; if omitted, SQLTeX will prompt for\n";
+ $helptext .= " a password. This overwrites the password in the input file.\n\n";
+
+ $helptext .= " --username <user>\n";
+ $helptext .= " -U <user>\n";
+ $helptext .= " database username\n\n";
+
+ $helptext .= " --version\n";
+ $helptext .= " -V\n";
+ $helptext .= " print version number and exit\n\n";
+
+ $helptext .= " --filename-extend <string>\n";
+ $helptext .= " -e <string>\n";
+ $helptext .= " add string to the output filename:\n";
+ $helptext .= " \'input.tex\' will be \'inputstring.tex\'\n";
+ $helptext .= " In \'string\', the values between curly braces \{\}\n";
+ $helptext .= " will be substituted:\n";
+ $helptext .= " Pn parameter n\n";
+ $helptext .= " M current monthname (Mon)\n";
+ $helptext .= " W current weekday (Wdy)\n";
+ $helptext .= " D current date (yyyymmdd)\n";
+ $helptext .= " DT current date and time (yyyymmddhhmmss)\n";
+ $helptext .= " T current time (hhmmss)\n";
+ $helptext .= " e.g., the command \'sqltex --filename-extend _{P1}_{W} my_file code\'\n";
+ $helptext .= " will read \'my_file.tex\' and write \'myfile_code_Tue.tex\'\n";
+ $helptext .= " The same command, but with option \--file-extension\' would create the\n";
+ $helptext .= " outputfile \'myfile._code_Tue\'\n";
+ $helptext .= " By default the outputfile \'myfile_stx.tex\' would have been written.\n";
+ $helptext .= " The options \'--file-extension\' and \'--filename-extend\' cannot be used\n";
+ $helptext .= " together or with \'--output\'.\n\n";
+
+ $helptext .= " --force\n";
+ $helptext .= " -f\n";
+ $helptext .= " force overwrite of existing files\n\n";
+
+ $helptext .= " --help\n";
+ $helptext .= " -h\n";
+ $helptext .= " print this help message and exit\n\n";
+
+ $helptext .= " --multidoc-numbered\n";
+ $helptext .= " -m\n";
+ $helptext .= " Multidocument mode; create one document for each parameter that is retrieved\n";
+ $helptext .= " from the database in the input document (see documentation)\n";
+ $helptext .= " This option cannot be used with \'--output\'.\n\n";
+
+ $helptext .= " --multidoc-named\n";
+ $helptext .= " -M\n";
+ $helptext .= " Same as -m, but with the parameter in the filename i.s.o. a serial number\n\n";
+
+ $helptext .= " --output <file>\n";
+ $helptext .= " -o <file>\n";
+ $helptext .= " specify an output file. Cannot be used with \'--file-extension\',\n";
+ $helptext .= " \'--filename-extend\' or the \'--multidoc\' options.\n\n";
+
+ $helptext .= " --skip-empty-lines\n";
+ $helptext .= " -S\n";
+ $helptext .= " All SQLTeX commands will be removed from the input line or replaced by the\n";
+ $helptext .= " corresponding value. The rest of the input line is written to the output file.\n";
+ $helptext .= " This includes lines that only contain a SQLTeX command (and a newline character).\n";
+ $helptext .= " This will result in an empty line in the output file.\n";
+ $helptext .= " By specifying this option, these empty lines will be skipped. Lines that were empty\n";
+ $helptext .= " in the input will be written.\n\n";
+
+ $helptext .= " --write-comments\n";
+ $helptext .= " -C\n";
+ $helptext .= " LaTeX comments in the input file will be skipped by default. With this option,\n";
+ $helptext .= " comments will also be copied to the output file.\n\n";
+
+ $helptext .= " --prefix <prefix>\n";
+ $helptext .= " -p <prefix>\n";
+ $helptext .= " prefix used in the SQLTeX file. Default is \'sql\'\n";
+ $helptext .= " (e.g. \\sqldb[user]{database}), but this can be overwritten if it conflicts\n";
+ $helptext .= " with other user-defined commands.\n\n";
+
+ $helptext .= " --quiet\n";
+ $helptext .= " -q\n";
+ $helptext .= " run in quiet mode\n\n";
+
+ $helptext .= " --replacementfile <file>\n";
+ $helptext .= " -r <file>\n";
+ $helptext .= " specify a file that contains replace characters. This is a list with two tab-separated\n";
+ $helptext .= " fields per line. The first field holds a string that will be replaced in the SQL output\n";
+ $helptext .= " by the second string.\n";
+ $helptext .= " By default the file \'$main::config_location/SQLTeX_r.dat\' is used.\n";
+ $helptext .= " This default file will still be read after the given replacement file, unless support for\n";
+ $helptext .= " multiple replacement files is disabled in the configuration.\n\n";
+
+ $helptext .= " --no-replacementfile\n";
+ $helptext .= " -R\n";
+ $helptext .= " do not use a replace file. \'--replacementfile\' \'--no-replacementfile\' are handled\n";
+ $helptext .= " in the same order as they appear on the command line.\n";
+ $helptext .= " For backwards compatibility, -rn is also still supported.\n\n";
+
+ $helptext .= " --sqlserver <server>\n";
+ $helptext .= " -s <server>\n";
+ $helptext .= " SQL server to connect to. Default is \'localhost\'\n\n";
+
+ $helptext .= " --updates\n";
+ $helptext .= " -u\n";
+ $helptext .= " If the input file contains updates, execute them.\n\n";
+
+ $helptext .= " file is the input file that should be read. By default,\n";
+ $helptext .= " sqltex looks for a file with extension \'.$main::configuration{'texex'}\'.\n\n";
+ $helptext .= " parameter(s) are substituted in the SQL statements if they contain\n";
+ $helptext .= " the string \$PAR[x] somewhere in the statement, where\n";
+ $helptext .= " \'x\' is the number of the parameter.\n";
+
+ print $helptext;
+}
+
+#####
+# Print the version number
+#
+sub print_version {
+ print "sqltex v$main::version - $main::rdate\n";
+}
+
+#####
+# If we're not running in quiet mode (-q), this routine prints a message telling
+# the user what's going on.
+#
+sub print_message ($) {
+ my $message = shift;
+ print "$message\n" unless (defined $main::options{'q'});
+}
+
+
+#####
+# If we have to prompt for a password, disable terminal echo, get the password
+# and return it to the caller
+#
+sub get_password ($$) {
+ my ($usr, $srv) = @_;
+
+ my $pwd = "";
+
+ my $q = "Password for $usr\@$srv : ";
+ if ($main::ReadKey_available) {
+ print $q;
+ ReadMode(4);
+ while(ord(my $keyStroke = ReadKey(0)) != 10) {
+ if(ord($keyStroke) == 127 || ord($keyStroke) == 8) { # DEL/Backspace
+ chop($pwd);
+ print "\b \b";
+ } elsif(ord($keyStroke) >= 32) { # Skip control characters
+ $pwd = $pwd . $keyStroke;
+ print '*';
+ }
+ }
+ ReadMode(0);
+ print "\n";
+ } else {
+ if ($main::configuration{'allow_readable_pwd'}) {
+ print $q;
+ $pwd = <STDIN>;
+ chomp $pwd;
+ } else {
+ die "Cannot ask for password. Either install the Term::ReadKey module or set 'allow_readable_pwd' to 1 in the configuration";
+ }
+ }
+ return $pwd;
+}
+
+#####
+# If we have to prompt for a user. Get it and return it to the caller
+#
+sub get_username ($) {
+ my $srv = shift;
+
+ print "Username at $srv : ";
+
+ my $usr = <STDIN>;
+ chomp $usr;
+ return $usr;
+}
+
+
+#######
+# Find the file extension for the outputfile
+#
+sub file_extension ($) {
+ my $subst = shift;
+
+ my %mn = ('Jan','01', 'Feb','02', 'Mar','03', 'Apr','04',
+ 'May','05', 'Jun','06', 'Jul','07', 'Aug','08',
+ 'Sep','09', 'Oct','10', 'Nov','11', 'Dec','12' );
+ my $sydate = localtime (time);
+ my ($wday, $mname, $dnum, $time, $year) = split(/\s+/,$sydate);
+ $dnum = "0$dnum" if ($dnum < 10);
+ while ($subst =~ /\{[a-zA-Z0-9]+\}/) {
+ my $s1 = $`;
+ my $sub = $&;
+ my $s2 = $';
+ $sub =~ s/[\{\}]//g;
+ if ($sub =~ /P[0-9]/) {
+ $sub =~ s/P//;
+ die ("insufficient parameters to substitute \{P$sub\}\n") if ($sub > $#ARGV);
+ $sub = $ARGV[$sub];
+ } elsif ($sub eq 'M') {
+ $sub = $mname;
+ } elsif ($sub eq 'W') {
+ $sub = $wday;
+ } elsif ($sub eq 'D') {
+ $sub = "$year$mn{$mname}$dnum";
+ } elsif ($sub eq 'DT') {
+ $sub = "$year$mn{$mname}$dnum$time";
+ $sub =~ s/://g;
+ } elsif ($sub eq 'T') {
+ $sub = $time;
+ $sub =~ s/://g;
+ } else {
+ die ("unknown substitution code \{$sub\}\n");
+ }
+ $subst = "$s1$sub$s2";
+ }
+ return ($subst);
+}
+
+#####
+# Find the configuration files
+#
+sub get_configfiles {
+ if (defined $main::options{'c'}) {
+ if (!$main::ext_cfgfile_allowed) {
+ die "Use of the --configfile option is disallowed by your system administrator";
+ }
+ $main::configurationfile = $main::options{'c'};
+ } else {
+ $main::configurationfile = $main::config_location
+ . ($main::config_location eq '' ? '' : '/')
+ . 'SQLTeX.cfg';
+ }
+ if (!-e $main::configurationfile) {
+ die ("Configfile $main::configurationfile does not exist\n");
+ }
+
+ @main::replacefiles = ();
+ if (!defined $main::options{'R'} && $main::options{'r'} ne "n") {
+ my $std_replacefile = $main::config_location
+ . ($main::config_location eq '' ? '' : '/') . 'SQLTeX_r.dat';
+ if (!-e $std_replacefile) {
+ warn ("replace file $std_replacefile does not exist\n");
+ $std_replacefile = "";
+ }
+ my $adl_replacefile = "";
+ if (defined $main::options{'r'}) {
+ if (!-e $main::options{'r'}) {
+ warn ("replace file $main::options{'r'} does not exist\n");
+ } else {
+ $adl_replacefile = $main::options{'r'};
+ }
+ }
+ my $rf_cnt = 0;
+ if ($adl_replacefile ne "") {
+ $main::replacefiles[$rf_cnt++] = $adl_replacefile;
+ }
+ if ($std_replacefile ne "") {
+ $main::replacefiles[$rf_cnt++] = $std_replacefile;
+ }
+ }
+
+ return;
+}
+
+#####
+# Declare the filenames to use in this run.
+# If a file has been entered
+#
+sub get_filenames {
+ $main::inputfile = $ARGV[0] || die "no input file specified\n";
+
+ $main::path = '';
+ while ($main::inputfile =~ /\//) {
+ $main::path .= "$`/";
+ $main::inputfile =~ s/$`\///;
+ }
+ if ($main::inputfile =~/\./) {
+ if ((!-e "$main::path$main::inputfile") && (-e "$main::path$main::inputfile.$main::configuration{'texex'}")) {
+ $main::inputfile .= ".$main::configuration{'texex'}";
+ }
+ } else {
+ $main::inputfile .= ".$main::configuration{'texex'}"
+ }
+ die "File $main::path$main::inputfile does not exist\n" if (!-e "$main::path$main::inputfile");
+
+ if (!defined $main::options{'o'}) {
+ $main::inputfile =~ /\./;
+ $main::outputfile = "$`";
+ my $lastext = "$'";
+ while ($' =~ /\./) {
+ $main::outputfile .= ".$`";
+ $lastext = "$'";
+ }
+ if (defined $main::options{'E'} || defined $main::options{'e'}) {
+ $main::configuration{'stx'} = &file_extension ($main::options{'E'} || $main::options{'e'});
+ }
+ if (defined $main::options{'E'}) {
+ $main::outputfile .= "$main::multidoc_id.$main::configuration{'stx'}";
+ } else {
+ $main::outputfile .= "$main::configuration{'stx'}$main::multidoc_id\.$lastext";
+ }
+ if ($main::configuration{'def_out_is_in'}) {
+ $main::outputfile = $main::path . $main::outputfile;
+ }
+ } else {
+ $main::outputfile = $main::options{'o'};
+ if ($main::configuration{'def_out_is_in'} && !($main::outputfile =~ /\//)) {
+ $main::outputfile = $main::path . $main::outputfile;
+ }
+ }
+
+ return;
+}
+
+#####
+# Trim functions
+#
+sub ltrim { my $s = shift; $s =~ s/^\s+//; return $s; }
+sub rtrim { my $s = shift; $s =~ s/\s+$//; return $s; }
+sub trim { my $s = shift; return ltrim(rtrim($s)); }
+
+#######
+# Connect to the database
+#
+sub db_connect($$) {
+ my ($up, $db) = @_;
+ state $data_source;
+ state $gotInput = 0;
+
+ $main::line =~ s/(\[.*?\])?\{$db\}//;
+
+ state $un = '';
+ state $pw = '';
+ state $hn = '';
+
+ if (!$gotInput) {
+ my @opts = split(',', $up);
+ for(my $idx = 0; $idx <= $#opts; $idx++) {
+ my $opt = $opts[$idx];
+ if ($opt =~ /=/) {
+ if ($` eq 'user') {
+ $un = $';
+ } elsif ($` eq 'passwd') {
+ $pw = $';
+ } elsif ($` eq 'host') {
+ $hn = $';
+ }
+ } else {
+ if ($idx == 0) {
+ $un = $opt;
+ } elsif ($idx == 1) {
+ $pw = $opt;
+ } elsif ($idx == 2) {
+ $hn = $opt;
+ }
+ }
+ }
+
+ $un = $main::options{'U'} if (defined $main::options{'U'});
+ $un = &get_username($main::options{'s'} || 'localhost') if ($un eq '?');
+
+ my $promptForPwd = 0;
+ if (defined $main::options{'P'}) {
+ if ($main::options{'P'} eq '') {
+ $promptForPwd = 1;
+ } else {
+ $pw = $main::options{'P'}
+ }
+ }
+ if ($pw eq '?') {
+ $promptForPwd = 1;
+ }
+ $pw = &get_password ($un, $main::options{'s'} || 'localhost') if ($promptForPwd);
+ $gotInput = 1;
+
+ $hn = $main::options{'s'} if (defined $main::options{'s'});
+
+ if ($main::configuration{'dbdriver'} eq "Pg") {
+ $data_source = "DBI:$main::configuration{'dbdriver'}:dbname=$db";
+ $data_source .= ";host=$hn" unless ($hn eq "");
+ } elsif ($main::configuration{'dbdriver'} eq "Oracle") {
+ $data_source = "DBI:$main::configuration{'dbdriver'}:$db";
+ $data_source .= ";host=$hn;sid=$main::configuration{'oracle_sid'}" unless ($hn eq "");
+ $data_source .= ";sid=$main::configuration{'oracle_sid'}";
+ } elsif ($main::configuration{'dbdriver'} eq "Ingres") {
+ $data_source = "DBI:$main::configuration{'dbdriver'}";
+ $data_source .= ":$hn" unless ($hn eq "");
+ $data_source .= ":$db";
+ } elsif ($main::configuration{'dbdriver'} eq "Sybase") {
+ $data_source = "DBI:$main::configuration{'dbdriver'}:$db";
+ $data_source .= ";server=$hn" unless ($hn eq "");
+ } elsif ($main::configuration{'dbdriver'} eq "ODBC") {
+ if (!exists ($main::configuration{'odbc_driver'})) {
+ $main::configuration{'odbc_driver'} = 'SQL Server';
+ }
+ if ($hn eq "") {
+ $hn = 'localhost';
+ }
+ $data_source = "DBI:ODBC:Driver={$main::configuration{'odbc_driver'}};Server=$hn";
+ $data_source .= ";Database=$db";
+ $data_source .= ";UID=$un" unless ($un eq "");
+ $data_source .= ";PWD=$pw" unless ($pw eq "");
+ } else { # MySQL, mSQL, ...
+ $data_source = "DBI:$main::configuration{'dbdriver'}:database=$db";
+ $data_source .= ";host=$hn" unless ($hn eq "");
+ }
+ }
+ if (!defined $main::options{'q'}) {
+ my $msg = "Connect to database $db on ";
+ $msg .= $hn || 'localhost';
+ $msg .= " as user $un" unless ($un eq '');
+ $msg .= " using a password" unless ($pw eq '');
+ &print_message ($msg);
+ }
+ if ($main::configuration{'sqlsystem_allowed'}) {
+ %main::connect_info = (
+ 'hn' => $hn
+ ,'un' => $un
+ ,'pw' => $pw
+ ,'db' => $db
+ );
+ }
+ $main::db_handle = DBI->connect ($data_source, $un, $pw, { RaiseError => 0, PrintError => 1 }) || &signal_message (1);
+ return;
+}
+
+#####
+# Check if the SQL statement contains options
+# Supported options are:
+# setvar=<i>, where <i> is the list location to store the variable.
+# setarr=<i>
+#
+sub check_options ($) {
+ my $options = shift;
+ return if ($options eq '');
+ $options =~ s/\[//;
+ $options =~ s/\]//;
+
+ my @optionlist = split /,/, $options;
+ while (@optionlist) {
+ my $opt = shift @optionlist;
+ if ($opt =~ /^setvar=/i) {
+ $main::var_no = $';
+ $main::setvar = 1;
+ }
+ if ($opt =~ /^setarr=/i) {
+ $main::arr_no = $';
+ $main::setarr = 1;
+ }
+ if ($opt =~ /^fldsep=/i) {
+ $main::fldsep = qq{$'};
+ $main::fldsep =~ s/NEWLINE/\n/;
+ }
+ if ($opt =~ /^rowsep=/i) {
+ $main::rowsep = qq{$'};
+ $main::rowsep =~ s/NEWLINE/\n/;
+ }
+ }
+}
+
+#####
+# Replace values from the query result as specified in the replace files.
+# This is done in two steps, to prevent characters from being replaces again
+# if they occus both as key and as value.
+#
+sub replace_values ($) {
+ my $sqlresult = shift;
+ my $rk;
+
+ foreach $rk (@main::repl_order) {
+ my ($begin, $end) = split /\Q$main::configuration{'rfile_regexploc'}\E/,$main::configuration{'rfile_regexp'};
+ if ($rk =~ /^\Q$begin\E(.*)\Q$end\E$/) {
+ $sqlresult =~ s/$1/$main::repl_key{$rk}/g;
+ } else {
+ $sqlresult =~ s/\Q$rk\E/$main::repl_key{$rk}/g;
+ }
+ }
+
+ foreach $rk (keys %main::repl_key) {
+ $sqlresult =~ s/$main::repl_key{$rk}/$main::repl_val{$main::repl_key{$rk}}/g;
+ }
+ return ($sqlresult);
+}
+
+#####
+# Select multiple rows from the database. This function can have
+# the [fldsep=s] and [rowsep=s] options to define the string which
+# should be used to separate the fields and rows.
+# By default, fields are separated with a comma and blank (', '), and rows
+# are separated with a newline character ('\\')
+#
+sub sql_row ($$) {
+ my ($options, $query) = @_;
+ local $main::fldsep = ', ';
+ local $main::rowsep = "\\\\";
+ local $main::setarr = 0;
+ my (@values, @return_values, $rc, $fc);
+
+ &check_options ($options);
+
+ &print_message ("Retrieving row(s) with \"$query\"");
+ $main::sql_statements++;
+ my $stat_handle = $main::db_handle->prepare ($query);
+ $stat_handle->execute ();
+
+ if ($main::setarr) {
+ &signal_message (7) if (defined $main::arr[$main::arr_no] && !$main::multidoc);
+ @main::arr[$main::arr_no] = ();
+ while (my $ref = $stat_handle->fetchrow_hashref()) {
+ foreach my $k (keys %$ref) {
+ $ref->{$k} = replace_values ($ref->{$k});
+ }
+ push @{$main::arr[$main::arr_no]},$ref;
+ }
+ $stat_handle->finish ();
+ return ();
+ }
+
+ while (@values = $stat_handle->fetchrow_array ()) {
+ $fc = $#values + 1;
+ if ($#main::replacefiles >= 0) {
+ my $list_cnt = 0;
+ foreach (@values) {
+ $values[$list_cnt] = replace_values ($values[$list_cnt]);
+ $list_cnt++;
+ }
+ }
+ push @return_values, (join "$main::fldsep", @values);
+ }
+ $stat_handle->finish ();
+
+ if ($#return_values < 0) {
+ &signal_message (4);
+ }
+
+ $rc = $#return_values + 1;
+ if ($rc == 1) {
+ &print_message ("Found $rc row with $fc field(s)");
+ } else {
+ &print_message ("Found $rc rows with $fc fields each");
+ }
+
+ return (join "$main::rowsep", @return_values);
+
+}
+
+
+#####
+# Select a single field from the database. This function can have
+# the [setvar=n] option to define an internal variable
+#
+sub sql_field ($$) {
+ my ($options, $query) = @_;
+ local $main::setvar = 0;
+
+ &check_options ($options);
+
+ $main::sql_statements++;
+
+ &print_message ("Retrieving field with \"$query\"");
+ my $stat_handle = $main::db_handle->prepare ($query);
+ $stat_handle->execute ();
+ my @result = $stat_handle->fetchrow_array ();
+ $stat_handle->finish ();
+
+ if ($#result < 0) {
+ &signal_message (4);
+ } elsif ($#result > 0) {
+ &signal_message (5);
+ } else {
+ &print_message ("Found 1 value: \"$result[0]\"");
+ if ($main::setvar) {
+ &signal_message (7) if (defined $main::var[$main::var_no] && !$main::multidoc);
+ $main::var[$main::var_no] = $result[0];
+ return '';
+ } else {
+ if ($#main::replacefiles >= 0) {
+ return (replace_values ($result[0]));
+ } else {
+ return ($result[0]);
+ }
+ }
+ }
+}
+
+#####
+# Start a section that will be repeated for evey row that is on stack
+#
+sub sql_start ($) {
+ my $arr_no = shift;
+ &signal_message (11) if (!defined $main::arr[$arr_no]);
+ if (@main::current_array) {
+ @main::current_array = ();
+ }
+ @main::loop_data = ();
+ push @main::current_array,$arr_no;
+}
+
+#####
+# Use a named variable from the stack
+#
+sub sql_use ($$) {
+ my ($field, $loop) = @_;
+ my $return_value = $main::configuration{'no_such_used_fld'};
+ if (defined $main::arr[$#main::current_array][$loop]->{$field}) {
+ $return_value = $main::arr[$#main::current_array][$loop]->{$field};
+ }
+ return $return_value;
+
+}
+
+
+#####
+# Stop processing the current array
+#
+sub sql_end () {
+ my $result = '';
+
+ for (my $cnt = 0; $cnt <= $#{$main::arr[$#main::current_array]}; $cnt++) {
+ for (my $lines = 0; $lines < $#{$main::loop_data[$#main::current_array]}; $lines++) {
+ my $buffered_line = ${$main::loop_data[$#main::current_array]}[$lines];
+ my $cmdPrefix = $main::configuration{'alt_cmd_prefix'};
+ if ($buffered_line =~ s/\\$cmdPrefix$main::configuration{'sql_endif'}\{\}//) {
+ $main::if_enabled = 1;
+ }
+ if ($buffered_line =~ /\\$cmdPrefix$main::configuration{'sql_if'}/) {
+ my $lin1 = $`;
+ my $lin2 = $';
+ $lin2 =~ s/^\{//;
+ $lin2 =~ /\}/;
+ my $statement = $`;
+ $lin2 = $';
+ $main::if_enabled = &sql_if($statement, $cnt);
+ $buffered_line = $lin1;
+ if ($main::if_enabled) {
+ $buffered_line .= $lin2;
+ }
+ }
+ if (!$main::if_enabled) {
+ next;
+ }
+ while (($buffered_line =~ /\\$cmdPrefix[a-z]+(\[|\{)/) && !($buffered_line =~ /\\\\$cmdPrefix[a-z]+(\[|\{)/)) {
+ my $cmdfound = $&;
+ $cmdfound =~ s/\\//;
+ $cmdfound =~ s/\{/\\\{/;
+
+ $buffered_line =~ /\\$cmdfound/;
+ my $lin1 = $`;
+ $buffered_line = $';
+ $buffered_line =~ /\}/;
+ my $statement = $`;
+ my $lin2 = $';
+
+ if ($cmdfound =~ /$main::configuration{'sql_use'}/) {
+ $buffered_line = $lin1 . &sql_use($statement, $cnt) . $lin2;
+ }
+ }
+ if ($buffered_line =~ /\\$main::configuration{'last_cmd_prefix'}$main::configuration{'sql_system'}/) {
+ my $cmdfound = $&;
+ $cmdfound =~ s/\\//;
+ $cmdfound =~ s/\{/\\\{/;
+
+ $buffered_line =~ /\\$cmdfound/;
+ my $lin1 = $`;
+ $buffered_line = $';
+ $buffered_line =~ /\}/;
+ my $statement = $`;
+ my $lin2 = $';
+ $statement =~ s/^\{//;
+
+ while ($buffered_line =~ /\\$main::configuration{'alt_cmd_prefix'}$main::configuration{'sql_use'}\{(\w+)\}/) {
+ my $usereplacement = &sql_use($1, $cnt);
+ $buffered_line =~ s/\\$main::configuration{'last_cmd_prefix'}$main::configuration{'sql_use'}\{(\w+)\}/$usereplacement/;
+ }
+ if ($cmdfound =~ /$main::configuration{'sql_system'}/) {
+ $buffered_line = $lin1 . &sql_system($statement) . $lin2;
+ }
+ }
+ $result .= $buffered_line;
+ }
+ }
+
+ pop @main::current_array;
+ return $result;
+}
+
+#####
+# Start a conditional block
+#
+sub sql_if ($$) {
+ my ($condition, $cnt) = @_;
+ if ($condition =~ /(&&|\|\|)/) {
+ my $c1 = &check_condition($`, $cnt);
+ my $c2 = &check_condition($', $cnt);
+ return eval("$c1 $& $c2");
+ } else {
+ return &check_condition($condition, $cnt);
+ }
+}
+
+#####
+# Helper function for sql_if
+#
+sub check_condition ($$) {
+ my ($condition, $cnt) = @_;
+ $condition =~ /(==|!=|<|>|<=|>=)/;
+
+ my $lval = $`;
+ my $rval = $';
+ my $comparisson = $&;
+ $lval = &trim($lval);
+ $rval = &trim($rval);
+
+ my $uf = &sql_use($lval, $cnt);
+ if ($uf ne $main::configuration{'no_such_used_fld'}) {
+ $lval = $uf;
+ }
+ $uf = &sql_use($rval, $cnt);
+ if ($uf ne $main::configuration{'no_such_used_fld'}) {
+ $rval = $uf;
+ }
+
+ my $result = 0;
+ if ($comparisson eq "==") {
+ $result = ($lval == $rval);
+ } elsif ($comparisson eq '!=') {
+ $result = ($lval != $rval);
+ } elsif ($comparisson eq '<') {
+ $result = ($lval < $rval);
+ } elsif ($comparisson eq '>') {
+ $result = ($lval > $rval);
+ } elsif ($comparisson eq '<=') {
+ $result = ($lval <= $rval);
+ } elsif ($comparisson eq '>=') {
+ $result = ($lval >= $rval);
+ }
+ return $result;
+}
+
+#####
+# Select a list of rows from the database. Each row will be input
+# for a document in multidocument mode.
+#
+sub sql_setparams ($$) {
+ my ($options, $query) = @_;
+ my (@values, @return_values);
+
+ &check_options ($options);
+
+ &print_message ("Retrieving parameter list with \"$query\"");
+ $main::sql_statements++;
+ my $stat_handle = $main::db_handle->prepare ($query);
+ $stat_handle->execute ();
+
+ for (my $i = 0; @values = $stat_handle->fetchrow_array (); $i++) {
+ for ($j = 0; $j <= $#values; $j++) {
+ $return_values[$i][$j] = $values[$j];
+ }
+ }
+
+ $stat_handle->finish ();
+
+ if ($#return_values < 0) {
+ &signal_message (8);
+ }
+
+ &print_message ('Multidocument parameters found; ' . $#return_values+1 ." documents will be created: handle document $main::multidoc_cnt") unless ($main::multidoc_cnt == 0);
+
+ return (@return_values);
+}
+
+
+#####
+# Perform an update.
+#
+sub sql_update ($$) {
+ my ($options, $query) = @_;
+ local $main::setvar = 0;
+
+ if (!defined $main::options{'u'}) {
+ &print_message ("Updates will be ignored");
+ return;
+ }
+ &check_options ($options);
+
+ &print_message ("Updating values with \"$query\"");
+ my $rc = $main::db_handle->do($query);
+ &print_message ("$rc rows updated");
+}
+
+####
+# Call an external script or system command
+#
+sub sql_system ($) {
+ my $cmd = shift;
+
+ my $return_value = '\\textbf{use of the \\textbackslash sqlsystem command is disallowed in the configuration}';
+ if ($main::configuration{'sqlsystem_allowed'}) {
+ $cmd =~ s/\<SRV\>/$main::connect_info{'hn'}/;
+ $cmd =~ s/\<USR\>/$main::connect_info{'un'}/;
+ $cmd =~ s/\<PWD\>/$main::connect_info{'pw'}/;
+ $cmd =~ s/\<DB\>/$main::connect_info{'db'}/;
+ $return_value = `$cmd`;
+ }
+ return $return_value;
+}
+
+#####
+# Simple error handling
+# Files will be closed if opened, and if no sql output was written yet,
+# the outputfile will be removed.
+#
+sub signal_message ($) {
+ my $step = shift;
+ my $can_continue = 0;
+
+ $can_continue = 1 if ($step == 4 && $main::NULLallowed);
+
+ if ($step >= 1 && $step <= 2 && !$can_continue) {
+ unlink ($main::outputfile);
+ }
+
+ #####
+ # Step specific exit
+ #
+ my $msg;
+ if ($step == 1) {
+ $msg = "noerror opening database at line $main::lcount[$main::fcount]";
+ } elsif ($step == 2) {
+ $msg = "no database opened at line $main::lcount[$main::fcount]";
+ } elsif ($step == 3) {
+ $msg = "insufficient parameters to substitute variable on line $main::lcount[$main::fcount]";
+ } elsif ($step == 4) {
+ $msg = "no result set found on line $main::lcount[$main::fcount]";
+ } elsif ($step == 5) {
+ $msg = "result set too big on line $main::lcount[$main::fcount]";
+ } elsif ($step == 6) {
+ $msg = "trying to substitute with non existing on line $main::lcount[$main::fcount]";
+ } elsif ($step == 7) {
+ $msg = "trying to overwrite an existing variable on line $main::lcount[$main::fcount]";
+ } elsif ($step == 8) {
+ $msg = "no parameters for multidocument found on line $main::lcount[$main::fcount]";
+# } elsif ($step == 9) {
+# $msg = "too many fields returned in multidocument mode on $main::lcount[$main::fcount]";
+ } elsif ($step == 10) {
+ $msg = "unrecognized command on line $main::lcount[$main::fcount]";
+ } elsif ($step == 11) {
+ $msg = "start using a non-existing array on line $main::lcount[$main::fcount]";
+ } elsif ($step == 12) {
+ $msg = "\\sqluse command encountered outside loop context on line $main::lcount[$main::fcount]";
+ } elsif ($step == 13) {
+ $msg = "\\sqlif command encountered outside loop context on line $main::lcount[$main::fcount]";
+ }
+ if ($main::fcount > 0) {
+ for (my $fcnt = 0; $fcnt < $main::fcount; $fcnt++) {
+ $msg .= ', file included from line '.$main::lcount[$fcnt];
+ }
+ }
+ warn "$msg\n";
+ return if ($can_continue);
+ exit (1);
+}
+
+#####
+# An SQL statement was found in the input file. If multiple lines are
+# used for this query, they will be read until the '}' is found, after which
+# the query will be executed.
+#
+sub parse_command ($$$) {
+ my $cmdfound = shift;
+ my $multidoc_par = shift;
+ my $file_handle = shift;
+ my $options = '';
+ my $varallowed = 1;
+
+ $varallowed = 0 if ($cmdfound =~ /$main::configuration{'sql_open'}/);
+
+ chop $cmdfound;
+ $cmdfound =~ s/\\//;
+
+ $main::line =~ /\\$cmdfound/;
+ my $lin1 = $`;
+ $main::line = $';
+
+ while (!($main::line =~ /\}/)) {
+ chomp $main::line;
+ $main::line .= ' ';
+ $main::line .= <$file_handle>;
+ $main::lcount[$main::fcount]++;
+ }
+
+ $main::line =~ /\}/;
+ my $statement = $`;
+ my $lin2 = $';
+
+ my $raw_statement = $statement;
+ $raw_statement =~ s/^\{//;
+ $statement =~ s/(\[|\{)//g;
+ if ($statement =~ /\]/) {
+ $options = $`;
+ $statement = $';
+ }
+ if ($varallowed) {
+ if (($main::multidoc_cnt > 0) && $main::multidoc) {
+ for (my $i = 1; $i <= $#main::parameters; $i++) {
+ $statement =~ s/\$MPAR$i/$main::parameters[$main::multidoc_cnt-1][$i-1]/g;
+ }
+ }
+ for (my $i = 1; $i <= $#ARGV; $i++) {
+ $statement =~ s/\$PAR$i/$ARGV[$i]/g;
+ }
+ while ($statement =~ /\$VAR[0-9]/) {
+ my $varno = $&;
+ $varno =~ s/\$VAR//;
+ &signal_message (6) if (!defined ($main::var[$varno]));
+ $statement =~ s/\$VAR$varno/$main::var[$varno]/g;
+ }
+ if ($statement =~ /\$PAR/ && ($main::multidoc_cnt > 0) && $main::multidoc) {
+ print "Did you update your input file to reflect the changes in v2.2?\n";
+ print "Multidoc parameters are now used to replace \$MPARn (was \$PARn).\n";
+ print "Please check the documentation for more info.\n";
+ die ("No parameters found to replace in multidoc mode");
+ }
+ $statement =~ s/\{//;
+ }
+
+ $cmdfound =~ s/^$main::configuration{'cmd_prefix'}//;
+ if ($cmdfound eq $main::configuration{'sql_open'}
+ ) {
+ &db_connect($options, $statement);
+ $main::db_opened = 1;
+ return 0;
+ }
+
+ &signal_message (2) if (!$main::db_opened);
+ if ($cmdfound eq $main::configuration{'sql_field'}) {
+ $main::line = $lin1 . &sql_field($options, $statement) . $lin2;
+ } elsif ($cmdfound eq $main::configuration{'sql_row'}) {
+ $main::line = $lin1 . &sql_row($options, $statement) . $lin2;
+ } elsif ($cmdfound eq $main::configuration{'sql_params'}) {
+ if ($main::multidoc) { # Ignore otherwise
+ @main::parameters = &sql_setparams($options, $statement);
+ $main::line = $lin1 . $lin2;
+ return 1; # Finish this run
+ } else {
+ $main::line = $lin1 . $lin2;
+ }
+ } elsif ($cmdfound eq $main::configuration{'sql_update'}) {
+ &sql_update($options, $statement);
+ $main::line = $lin1 . $lin2;
+ } elsif ($cmdfound eq $main::configuration{'sql_start'}) {
+ &sql_start($statement);
+ $main::line = $lin1 . $lin2;
+ } elsif ($cmdfound eq $main::configuration{'sql_use'}) {
+ &signal_message (12) if (!@main::current_array);
+ $main::line = $lin1 . "\\" . $main::configuration{'alt_cmd_prefix'} . $main::configuration{'sql_use'} . "{" . $statement . "}" . $lin2; # Restore the line, will be processed later
+ } elsif ($cmdfound eq $main::configuration{'sql_end'}) {
+ $main::line = $lin1 . &sql_end() . $lin2;
+ } elsif ($cmdfound eq $main::configuration{'sql_endif'}) {
+ $main::line = $lin1 . "\\" . $main::configuration{'alt_cmd_prefix'} . $main::configuration{'sql_endif'} . "{}" . $lin2; # Restore the line, will be processed later
+ } elsif ($cmdfound eq $main::configuration{'sql_if'}) {
+ &signal_message (13) if (!@main::current_array);
+ $main::line = $lin1 . "\\" . $main::configuration{'alt_cmd_prefix'} . $main::configuration{'sql_if'} . "{" . $statement . "}" . $lin2; # Restore the line, will be processed later
+ } elsif ($cmdfound =~ /$main::configuration{'sql_system'}/) {
+ $main::line = $lin1 . &sql_system($raw_statement) . $lin2;
+ } else {
+ &signal_message (10);
+ }
+ return 0;
+}
+
+sub read_input($$$$) {
+ my ($input_file, $output_handle, $multidoc_par) = @_;
+
+ $main::fcount++;
+ $main::lcount[$main::fcount] = 0;
+
+ if (!-e $input_file) {
+ die "input file $input_file not found";
+ }
+ print_message("Processing file $input_file...");
+ open (my $fileIn, "<$input_file");
+
+ while ($main::line = <$fileIn>) {
+ $main::lcount[$main::fcount]++;
+ my $line_had_cmd = 0;
+
+ if ($main::line =~ /^\s*%/) {
+ next if (!$main::options{'C'});
+ } else {
+ if ($main::line =~ /(.*?)(\\in(put|clude))(\s*?)\{(.*?)\}(.*)/) {
+ print $output_handle "$1" unless ($output_handle == -1);
+ &read_input($5, $output_handle, $multidoc_par);
+ return if ($main::restart);
+ print $output_handle "$6\n" unless ($output_handle == -1);
+ }
+ my $cmdPrefix = $main::configuration{'cmd_prefix'};
+ if (@main::current_array) {
+ # Inside loop context the \sqlsystem{} command can contain \sqluse{}
+ $main::line =~ s/$cmdPrefix$main::configuration{'sql_system'}/$main::configuration{'last_cmd_prefix'}$main::configuration{'sql_system'}/;
+ }
+ while (($main::line =~ /\\$cmdPrefix[a-z]+(\[|\{)/) && !($main::line =~ /\\\\$cmdPrefix[a-z]+(\[|\{)/)) {
+ $line_had_cmd = 1;
+ if (&parse_command($&, $multidoc_par, $fileIn) && $main::multidoc && ($main::multidoc_cnt == 0)) {
+ close $fileIn;
+ $main::fcount--;
+ $main::restart = 1;
+ return;
+ }
+ }
+ }
+ next if ($line_had_cmd && $main::line eq "\n" && $main::options{'S'});
+
+ if (@main::current_array && $#main::current_array >= 0) {
+ push @{$main::loop_data[$#main::current_array]}, $main::line;
+ } else {
+ print $output_handle "$main::line" unless ($main::multidoc && ($main::multidoc_cnt == 0));
+ }
+ }
+ $main::fcount--;
+ close $fileIn;
+}
+
+#####
+# Process the input file
+# When multiple documents should be written, this routine is
+# multiple times.
+# The first time, it only builds a list with parameters that will be
+# used for the next executions
+#
+sub process_file {
+ my $multidoc_par = '';
+
+ if ($main::multidoc && ($main::multidoc_cnt > 0)) {
+ if (!defined($main::saved_outfile_template)) {
+ $main::saved_outfile_template = $main::outputfile;
+ }
+ $main::saved_outfile_template = $main::outputfile if ($main::multidoc_cnt == 1); # New global name; should be a static
+ $main::outputfile = $main::saved_outfile_template if ($main::multidoc_cnt > 1);
+ $main::outputfile =~ s/\#M\#/$main::multidoc_cnt/;
+ $main::outputfile =~ s/\#P\#/$main::parameters[($main::multidoc_cnt-1)][0]/;
+ $multidoc_par = @main::parameters[$main::multidoc_cnt - 1];
+ }
+ my $fileOut;
+ if ($main::multidoc && ($main::multidoc_cnt == 0)) {
+ $fileOut = -1;
+ } else {
+ open ($fileOut, ">$main::outputfile");
+ }
+
+ $main::sql_statements = 0;
+ $main::db_opened = 0;
+ $main::fcount = -1;
+ $main::restart = 0;
+
+ &read_input($main::path . $main::inputfile, $fileOut, $multidoc_par);
+
+ if ($main::multidoc) {
+ $main::multidoc = 0 if (($main::multidoc_cnt++) > $#main::parameters);
+ return if ($main::multidoc);
+ }
+
+ close $fileOut;
+}
+
+## Main:
+
+#####
+# Default config values, can be overwritten with SQLTeX.cfg
+#
+%main::configuration = (
+ 'dbdriver' => 'mysql'
+ ,'oracle_sid' => 'ORASID'
+ ,'texex' => 'tex'
+ ,'stx' => '_stx'
+ ,'def_out_is_in' => 0
+ ,'rfile_comment' => ';'
+ ,'rfile_regexploc' => '...'
+ ,'rfile_regexp' => 're(...)'
+ ,'multi_rfile' => 1
+ ,'cmd_prefix' => 'sql'
+ ,'sql_system' => 'system'
+ ,'sql_open' => 'db'
+ ,'sql_field' => 'field'
+ ,'sql_row' => 'row'
+ ,'sql_params' => 'setparams'
+ ,'sql_update' => 'update'
+ ,'sql_start' => 'start'
+ ,'sql_end' => 'end'
+ ,'sql_use' => 'use'
+ ,'sql_if' => 'if'
+ ,'sql_endif' => 'endif'
+ ,'sqlsystem_allowed' => 0
+ ,'allow_readable_pwd'=> 0
+ ,'repl_step' => 'OSTX'
+ ,'alt_cmd_prefix' => 'processedsqlcommand'
+ ,'last_cmd_prefix' => 'lastsqlcommand'
+ ,'no_such_used_fld' => '\textit{SQL\TeX\ use-field does not exist}'
+);
+
+#####
+# Some globals
+#
+{
+ my $realpath = Cwd::realpath($0);
+
+ my @dir_list = split /\//, $realpath;
+ pop @dir_list;
+ $main::my_location = join '/', @dir_list;
+ $main::if_enabled = 1;
+
+ if ($main::my_location =~ /texmf-dist\/scripts/) {
+ # Config location in a TeX Live distro
+ $main::config_location = $main::my_location;
+ } else {
+ if ($^O eq "linux") {
+ # Default on linux, can be changed when running configure
+ $main::config_location = '/usr/local/etc';
+ } else {
+ # Default on al other OSes
+ $main::config_location = $main::my_location;
+ }
+ }
+}
+
+$main::version = '3.0';
+$main::rdate = 'Sep 20, 2024';
+
+&parse_options;
+&get_configfiles;
+
+if (defined $main::configurationfile) {
+ open (CF, "<$main::configurationfile");
+ while ($main::line = <CF>) {
+ next if ($main::line =~ /^\s*#/);
+ next if ($main::line =~ /^\s*$/);
+ chomp $main::line;
+ my ($ck, $cv) = split /=/, $main::line, 2;
+ $ck =~ s/\s//g;
+ $cv =~ s/\s//g;
+ if ($cv ne '') {
+ $main::configuration{$ck} = $cv;
+ }
+ }
+ close CF;
+}
+
+# Check config
+# Used for loops, should not start with $main::configuration{'cmd_prefix'} !!
+if ($main::configuration{'alt_cmd_prefix'} =~ /^$main::configuration{'cmd_prefix'}/
+ || $main::configuration{'last_cmd_prefix'} =~ /^$main::configuration{'cmd_prefix'}/) {
+ die "Configuration items 'alt_cmd_prefix' and ĺast_cnd_prefix' cannot start with $main::configuration{'cmd_prefix'}";
+}
+
+&get_filenames;
+
+if (!$main::multidoc && -e "$main::outputfile") {
+ die ("outputfile $main::outputfile already exists\n")
+ unless (defined $main::options{'f'});
+}
+
+{
+ my $repl_cnt = '000';
+ @main::repl_order = ();
+ for (my $rf_cnt = 0; $rf_cnt <= $#main::replacefiles; $rf_cnt++) {
+ open (RF, "<$main::replacefiles[$rf_cnt]");
+ while ($main::line = <RF>) {
+ next if ($main::line =~ /^\s*$main::configuration{'rfile_comment'}/);
+ chomp $main::line;
+ $main::line =~ s/\t+/\t/;
+ my ($rk, $rv) = split /\t/, $main::line;
+ if ($rk ne '') {
+ push @main::repl_order, $rk;
+ $main::repl_key{$rk} = "$main::configuration{'repl_step'}$repl_cnt";
+ $main::repl_val{"$main::configuration{'repl_step'}$repl_cnt"} = $rv;
+ $repl_cnt++;
+ }
+ }
+ close RF;
+ if (!$main::configuration{'multi_rfile'}) {
+ last;
+ }
+ }
+}
+
+# Start processing
+do {
+ &process_file;
+ $main::restart = 0;
+ if ($main::sql_statements == 0) {
+ unlink ("$main::outputfile");
+ print "no sql statements found in $main::path$main::inputfile\n";
+ $main::multidoc = 0; # Problem in the input, useless to continue
+ } else {
+ print "$main::sql_statements queries executed - TeX file $main::outputfile written\n"
+ unless ($main::multidoc && ($main::multidoc_cnt == 1));
+ }
+} while ($main::multidoc); # Set to false when done
+
+$main::db_handle->disconnect() if ($main::db_opened);
+exit (0);
+
+#
+# And that's about it.
+#####
diff --git a/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua b/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua
index b07a551f8c6..fd510451cab 100755
--- a/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua
+++ b/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
xindex = xindex or { }
- local version = 0.60
+ local version = 0.61
xindex.version = version
--xindex.self = "xindex"
@@ -331,18 +331,17 @@ else
end
-
esc_char = args.escapechar
esc_char2 = esc_char..esc_char
writeLog(2,"Escapechar = "..esc_char.."\n",1)
escape_chars = { -- by default " is the escape char
- {esc_char2, '//escaped2//', esc_char },
- {esc_char..'@', '//escapedat//', '@' },
- {esc_char..'|', '//escapedvert//', '|' },
- {esc_char..'!', '//escapedexcl//', '!' },
- {'', '\\textbar', '|' },
- {'', '\\braceLeft', '{' },
- {'', '\\braceRight', '}' }
+ {esc_char2, '//escaped2//', esc_char },
+ {esc_char..'@', '//escapedat//', '@' },
+ {esc_char..'|', '//escapedvert//', '|' },
+ {esc_char..'!', '//escapedexcl//', '!' },
+ {'', '\\textbar', '|' },
+ {'', '\\braceLeft', '{' },
+ {'', '\\braceRight', '}' }
}
no_caseSensitive = args["no_casesensitive"]
diff --git a/Build/source/texk/web2c/ChangeLog b/Build/source/texk/web2c/ChangeLog
index efc216ecd59..b34327fb6fe 100644
--- a/Build/source/texk/web2c/ChangeLog
+++ b/Build/source/texk/web2c/ChangeLog
@@ -1,3 +1,8 @@
+2024-09-16 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * tests/ec-lmr10.tfm, tests/dump-basic.tex:
+ Add for tests of pTeX family
+
2024-09-07 Karl Berry <karl@freefriends.org>
* Makefile.am (texprof.am): include.
diff --git a/Build/source/texk/web2c/Makefile.in b/Build/source/texk/web2c/Makefile.in
index 4219af7a036..610d9a21f9e 100644
--- a/Build/source/texk/web2c/Makefile.in
+++ b/Build/source/texk/web2c/Makefile.in
@@ -3270,6 +3270,16 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \
ptexdir/tests/chcode-euc.pl ptexdir/tests/chcode-sjis.pl \
ptexdir/tests/skipjfmp.pl ptexdir/tests/skipjfmp.tfm \
ptexdir/ptrip/ptrip.diffs ptexdir/ptrip/texmf.cnf \
+ ptexdir/tests/ctrlsym.tex ptexdir/tests/ctrlsym.log \
+ ptexdir/tests/endlinechar.tex ptexdir/tests/endline.log \
+ ptexdir/tests/control-symbol.tex ptexdir/tests/jctrlsym.log \
+ ptexdir/tests/p-endlinea.typ ptexdir/tests/p-jctrlsyma.typ \
+ ptexdir/tests/let_char_token.tex ptexdir/tests/chartoken.log \
+ ptexdir/tests/ptexlineendmode.tex ptexdir/tests/p-lineenda.typ \
+ ptexdir/tests/printkanji.tex ptexdir/tests/pknj-s.log \
+ ptexdir/tests/pknj-e.log ptexdir/tests/p-pknj-sa.typ \
+ ptexdir/tests/p-pknj-ea.typ ptexdir/tests/ucs.tex \
+ ptexdir/tests/ucs-s.log ptexdir/tests/ucs-e.log \
$(uptex_web_srcs) $(uptex_ch_srcs) uptexdir/uptex.defines \
uptexdir/upbibtex.ch uptexdir/updvitype.ch \
uptexdir/uppltotf.ch uptexdir/uptftopl.ch uptexdir/COPYRIGHT \
@@ -3288,8 +3298,9 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \
uptexdir/tests/gkhugeok.tfm uptexdir/tests/gkhugeng.tfm \
uptexdir/tests/gkhugeng.err uptexdir/tests/gk256g.tfm \
uptexdir/tests/gk256k.tfm uptexdir/uptrip/uptrip.diffs \
- uptexdir/uptrip/texmf.cnf $(euptex_web_srcs) $(euptex_ch_srcs) \
- euptexdir/euptex.defines euptexdir/COPYRIGHT \
+ uptexdir/uptrip/texmf.cnf uptexdir/tests/up-prim.tex \
+ uptexdir/tests/up-prim.log $(euptex_web_srcs) \
+ $(euptex_ch_srcs) euptexdir/euptex.defines euptexdir/COPYRIGHT \
euptexdir/COPYRIGHT.jis euptexdir/ChangeLog \
euptexdir/EUPTEX.txt $(euptex_tests) \
euptexdir/eptrip/eptrip.log euptexdir/eptrip/eptrip.tex \
@@ -3297,7 +3308,27 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \
euptexdir/pdfprimitive.test \
euptexdir/tests/pdfprimitive-test.tex \
euptexdir/tests/pdfprimitive-euptex.log \
- euptexdir/tests/ctrlsym.log euptexdir/tests/ctrlsym.tex \
+ euptexdir/tests/ctrlsym.tex euptexdir/tests/ctrlsym.log \
+ euptexdir/tests/endlinechar.tex euptexdir/tests/endline.log \
+ euptexdir/tests/control-symbol.tex \
+ euptexdir/tests/jctrlsym.log euptexdir/tests/eup-endlinea.typ \
+ euptexdir/tests/eup-jctrlsyma.typ \
+ euptexdir/tests/printkanji.tex euptexdir/tests/pknj-s.log \
+ euptexdir/tests/pknj-e.log euptexdir/tests/pknj-u.log \
+ euptexdir/tests/eup-pknj-sa.typ \
+ euptexdir/tests/eup-pknj-ea.typ \
+ euptexdir/tests/eup-pknj-ua.typ euptexdir/tests/postpena.tex \
+ euptexdir/tests/postpena.log euptexdir/tests/free_ixsp.tex \
+ euptexdir/tests/free_ixsp.log euptexdir/tests/free_pena.tex \
+ euptexdir/tests/free_pena.log euptexdir/tests/inhibitglue.tex \
+ euptexdir/tests/eup-inhibitgluea.typ \
+ euptexdir/tests/kinsoku-table.tex \
+ euptexdir/tests/kinsoku-table.log \
+ euptexdir/tests/kinsoku-search.tex \
+ euptexdir/tests/kinsoku-search.log \
+ euptexdir/tests/eup-prim.tex euptexdir/tests/eup-prim.log \
+ euptexdir/tests/ucs.tex euptexdir/tests/ucs-s.log \
+ euptexdir/tests/ucs-e.log euptexdir/tests/ucs-u.log \
hitexdir/ChangeLog $(hitex_web) $(hitex_tests) \
hitexdir/tests/hello.tex hitexdir/tests/rule.tex \
pdftexdir/regex/COPYING.LIB pdftexdir/regex/README \
@@ -3609,7 +3640,9 @@ DISTCLEANFILES = CXXLD.sh tangle.c tangle.h tangle.p tangle-web2c \
ptests/memtest.bib ptests/memtest?.* ptests/xstory.dvityp \
ptests/xpagenum.typ ptests/xptex[34]*.typ ptests/xcmr10.tfm \
ptests/xcmr10.pl ptests/xsample*.typ ptests/x*min10.* \
- ptests/xchcode*.* ptests/xskipjfmp.* ptrip.diffs \
+ ptests/xchcode*.* ptests/xskipjfmp.* ptrip.diffs p-ctrlsym.log \
+ p-ctrlsym.out p-ctrlsym.tex p-endline*.* p-jctrlsym*.* \
+ p-chartoken.* p-lineend.* p-pknj-*.* p-ucs*.* \
$(nodist_uptex_SOURCES) uptex.web uptex.ch uptex-web2c uptex.p \
uptex.pool uptex-tangle $(upweb_programs:=.c) \
$(upweb_programs:=.h) $(upweb_programs:=.p) \
@@ -3621,11 +3654,13 @@ DISTCLEANFILES = CXXLD.sh tangle.c tangle.h tangle.p tangle-web2c \
uptests/xcmr10.tfm uptests/xcmr10.pl uptests/xsample*.typ \
uptests/x*min10.* uptests/xchcode*.* uptests/xtestnewu*.* \
uptests/xuparse.* uptests/yuparse.* uptests/ygkhuge*.* \
- uptests/ygk256*.* uptests/xskipjfmp.* uptrip.diffs \
+ uptests/ygk256*.* uptests/xskipjfmp.* uptrip.diffs up-prim.* \
$(nodist_euptex_SOURCES) euptex.web euptex.ch euptex-web2c \
euptex.p euptex.pool euptex-tangle euptrip.diffs \
- pdfprimitive-euptex.* eup-ctrlsym.fmt eup-ctrlsym.log \
- eup-ctrlsym.out eup-ctrlsym.tex $(nodist_hitex_SOURCES) \
+ pdfprimitive-euptex.* eup-ctrlsym.log eup-ctrlsym.out \
+ eup-ctrlsym.tex eup-endline*.* eup-jctrlsym*.* eup-pknj-*.* \
+ eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.* \
+ eup-prim.* eup-ucs*.* $(nodist_hitex_SOURCES) \
$(nodist_hishrink_SOURCES) $(nodist_histretch_SOURCES) \
hiformat-tangle hitex-tangle hello.log rule.log \
$(nodist_pdftex_SOURCES) pdftex-final.ch pdftex-web2c pdftex.p \
@@ -4447,7 +4482,10 @@ ptex_ch_srcs = \
ptex_tests = \
ptexdir/ptriptest.test \
ptexdir/pver.test \
- ptexdir/wcfname.test
+ ptexdir/wcfname.test \
+ ptexdir/ptex-ctrlsym.test \
+ ptexdir/ptex-prntknj.test \
+ ptexdir/ptex-ucs.test
uptex_cppflags = $(PTEXENC_INCLUDES) $(AM_CPPFLAGS) $(ZLIB_INCLUDES)
uptex_ldadd = libukanji.a $(pproglib) $(PTEXENC_LIBS) $(LDADD) $(ZLIB_LIBS)
@@ -4510,7 +4548,8 @@ uptex_tests = \
uptexdir/uptriptest.test uptexdir/ptriptest.test \
uptexdir/upver.test \
uptexdir/upkcat.test \
- uptexdir/wcfname.test uptexdir/wcfname0.test
+ uptexdir/wcfname.test uptexdir/wcfname0.test \
+ uptexdir/uptex-prim.test
# uppPLtoTF/upTFtoPL
upweb_tests = uptexdir/upbibtex.test uptexdir/updvitype.test \
@@ -4571,10 +4610,14 @@ euptex_ch_srcs = \
euptex_tests = \
euptexdir/euptriptest.test euptexdir/eptriptest.test \
euptexdir/pdfprimitive.test \
- euptexdir/euptex-ctrlsym.test \
euptexdir/eupver.test \
euptexdir/upkcat.test \
- euptexdir/wcfname.test euptexdir/wcfname0.test
+ euptexdir/wcfname.test euptexdir/wcfname0.test \
+ euptexdir/euptex-ctrlsym.test \
+ euptexdir/euptex-prntknj.test \
+ euptexdir/euptex-kinsoku.test \
+ euptexdir/euptex-prim.test \
+ euptexdir/euptex-ucs.test
# At the moment, these are the only man pages handled in the
@@ -4585,7 +4628,7 @@ euptex_tests = \
# See hitex.am for comments about handling man.
-@TEXPROF_TRUE@man1_MANS = texprofdir/man/texprof.man
+@TEXPROF_TRUE@man1_MANS = texprofdir/man/texprof.man texprofdir/man/texprofile.man
hitex_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) -I$(srcdir)/libmd5 \
-DINIT -DSTAT -DWEB2CVERSION="\"${WEB2CVERSION}\""
# -DDEBUG drops into an interactive debugging session.
@@ -5362,7 +5405,6 @@ libluaharfbuzz_a_SOURCES = \
luatexdir/luaharfbuzz/src/luaharfbuzz/variation.c
libluajitharfbuzz_a_SOURCES = $(libluaharfbuzz_a_SOURCES)
-# not yet there: texprofdir/man/texprofile.man
texprof_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/libmd5 -DINIT -DSTAT \
-DWEB2CVERSION="\"${WEB2CVERSION}\""
# -DDEBUG drops into an interactive debugging session.
@@ -22005,7 +22047,10 @@ ptex.web: tie$(EXEEXT) $(ptex_web_srcs)
ptex.ch: tie$(EXEEXT) ptex.web $(ptex_ch_srcs)
$(tie_c) ptex.web $(ptex_ch_srcs)
ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
-ptexdir/pver.log ptexdir/wcfname.log: ptex$(EXEEXT)
+ptexdir/pver.log ptexdir/wcfname.log \
+ ptexdir/ptex-ctrlsym.log ptexdir/ptex-prntknj.log \
+ ptexdir/ptex-ucs.log: ptex$(EXEEXT)
+
ptrip.diffs: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
$(triptrap_diffs) $@
.PHONY: ptrip-clean
@@ -22076,7 +22121,8 @@ uptftopl.web: tie$(EXEEXT) tftopl.web tftopl.ch
uptexdir/uptriptest.log uptexdir/ptriptest.log: \
uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
uptexdir/upver.log uptexdir/upkcat.log \
- uptexdir/wcfname.log uptexdir/wcfname0.log: uptex$(EXEEXT)
+ uptexdir/wcfname.log uptexdir/wcfname0.log \
+ uptexdir/uptex-prim.log: uptex$(EXEEXT)
uptexdir/upbibtex.log: upbibtex$(EXEEXT)
uptexdir/updvitype.log: updvitype$(EXEEXT)
uptexdir/uppltotf.log: uppltotf$(EXEEXT)
@@ -22088,6 +22134,7 @@ uptexdir/sample.log: updvitype$(EXEEXT)
uptexdir/yokotate.log uptexdir/skipjfmp.log \
uptexdir/newjfm.log uptexdir/uparse.log \
uptexdir/gkhuge.log uptexdir/gk256.log: uppltotf$(EXEEXT) uptftopl$(EXEEXT)
+
uptrip.diffs: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
$(triptrap_diffs) $@
.PHONY: uptrip-clean
@@ -22121,9 +22168,13 @@ euptex.ch: tie$(EXEEXT) euptex.web $(euptex_ch_srcs)
euptexdir/euptriptest.log euptexdir/eptriptest.log: \
euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
euptexdir/pdfprimitive.log: euptex$(EXEEXT)
-euptexdir/euptex-ctrlsym.log \
- euptexdir/eupver.log euptexdir/upkcat.log \
- euptexdir/wcfname.log euptexdir/wcfname0.log: euptex$(EXEEXT)
+euptexdir/eupver.log euptexdir/upkcat.log \
+ euptexdir/wcfname.log euptexdir/wcfname0.log \
+ euptexdir/euptex-ctrlsym.log euptexdir/euptex-prntknj.log \
+ euptexdir/euptex-kinsoku.log \
+ euptexdir/euptex-prim.log \
+ euptexdir/euptex-ucs.log: euptex$(EXEEXT)
+
euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
$(triptrap_diffs) $@
.PHONY: euptrip-clean
diff --git a/Build/source/texk/web2c/cwebdir/ChangeLog b/Build/source/texk/web2c/cwebdir/ChangeLog
index 7bb17212989..6d640feb0d7 100644
--- a/Build/source/texk/web2c/cwebdir/ChangeLog
+++ b/Build/source/texk/web2c/cwebdir/ChangeLog
@@ -1,3 +1,17 @@
+2024-10-06 Andreas Scherer <https://ascherer.github.io>
+
+ * ctwill-mini.ch: Fix line/paragraph break.
+
+2024-09-14 Andreas Scherer <https://ascherer.github.io>
+
+ * ctwill-mini.ch,
+ * ctwill-w2c.ch,
+ * cweav-w2c.ch,
+ * cweave.w,
+ * cwebacromac.tex,
+ * cwebmac.tex,
+ * refsort.ch: Fix sorting order in Names-of-the-Sections.
+
2024-08-12 Andreas Scherer <https://ascherer.github.io>
* Makefile
diff --git a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch
index c5f7a3df85c..1ed94438c22 100644
--- a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch
+++ b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch
@@ -37,6 +37,7 @@ additional material specific to \.{CTWILL}. % FIXME
Until then, \.{CWEAVE}'s sequence of sections will be preserved.
The ``banner line'' defined here should be changed whenever \.{CTWILL} is
+modified. The version number parallels the corresponding version of \.{CWEAVE}.
@y
A kind of ``user manual'' for \.{CTWILL} can be found in section~%
\X287:Mogrify {\tentex CWEAVE} into {\tentex CTWILL}\X~and beyond,
@@ -58,6 +59,7 @@ faithful overall rendering of {\itt CTWILL}'s code, though. \hfill
---Enjoy!\par}
\bigskip
The ``banner line'' defined here should be changed whenever \.{CTWILL} is
+modified. The version number parallels the corresponding version of \.{CWEAVE}.
@-banner@>
@$banner {CTWILL}1 =\.{"This\ is\ CTWILL"}@>
@@ -1589,9 +1591,9 @@ Section 212--213.
Section 215.
@x
-@<Append a string or...@>={@+ int count=-1; /* characters remaining before string break */
+@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */
@y
-@<Append a string or...@>={int count=-1; /* characters remaining before string break */
+@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */
@z
Section 220.
@@ -1815,16 +1817,24 @@ Section 245.
@-phase_two@>
@z
-Section 247.
+Section 246.
@x
-@ @d usage_sentinel (struct perm_meaning *)1
-@<Translate the current section@>= {
+@d save_position() save_line=out_line; save_place=out_ptr
@y
-@ @d usage_sentinel (struct perm_meaning *)1
+@d usage_sentinel (struct perm_meaning *)1
@-usage_sentinel@>
@$usage_sentinel {CTWILL}247 =(\&{struct} \&{perm\_meaning} ${}{*}{}$) \T{1}@>
-@<Translate the current section@>=@+ {
+@d save_position() save_line=out_line; save_place=out_ptr
+@z
+
+Section 247.
+
+@x
+@ @d usage_sentinel (struct perm_meaning *)1
+@<Translate the \9{c}current section@>= {
+@y
+@ @<Translate the \9{c}current section@>= @+ {
@z
Section 251.
@@ -1851,9 +1861,9 @@ Section 252.
Section 254.
@x
-@ @<Start a format...@>= {
+@ @<Start \9{a}a format...@>= {
@y
-@r @ @<Start a format...@>= {
+@r @ @<Start \9{a}a format...@>= {
@z
Section 255.
diff --git a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch
index 664254dee08..d421c3f78cd 100644
--- a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch
+++ b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch
@@ -466,7 +466,7 @@ beginning of phase two. We initialize the output variables in a slightly
tricky way so that the first line of the output file will be
`\.{\\input cwebmac}'.
-@<Start \TEX/...@>=
+@<Start \9{t}\TEX/...@>=
out_ptr=out_buf+1; out_line=1; active_file=tex_file;
tex_printf("\\input cwebma"); *out_ptr='c';
@y
@@ -486,7 +486,7 @@ debugging mini-index entries.
@d proofing flags['P']
-@<Start \TEX/...@>=
+@<Start \9{t}\TEX/...@>=
out_ptr=out_buf+1; out_line=1; active_file=tex_file;
tex_puts("\\input ");
tex_printf(use_language);
@@ -952,7 +952,7 @@ section_count=0; format_visible=true; right_start_switch=false; copy_limbo();
@x [12.229] l.4212
static boolean group_found=false; /* has a starred section occurred? */
-@ @<Translate the current section@>= {
+@ @<Translate the \9{c}current section@>= {
section_count++;
@y
static boolean group_found=false; /* has a starred section occurred? */
@@ -960,7 +960,7 @@ static boolean right_start_switch; /* has `\.{@@r}' occurred recently? */
static boolean temp_switch; /* has `\.{@@\%}' occurred recently? */
@ @d usage_sentinel (struct perm_meaning *)1
-@<Translate the current section@>= {
+@<Translate the \9{c}current section@>= {
section_count++;
temp_switch=false; temp_meaning_ptr=temp_meaning_stack;
top_usage=usage_sentinel;
@@ -1040,9 +1040,9 @@ flush_buffer(out_ptr,false,false);
@z
@x [12.236] l.4340
-@<Start a macro...@>= {
+@<Start \9{a}a macro...@>= {
@y
-@<Start a macro...@>= {
+@<Start \9{a}a macro...@>= {
is_macro=true;
@z
@@ -1073,10 +1073,10 @@ flush_buffer(out_ptr,false,false);
@z
@x [12.237] l.4369
-@ @<Start a format...@>= {
+@ @<Start \9{a}a format...@>= {
doing_format=true;
@y
-@ @<Start a format...@>= {
+@ @<Start \9{a}a format...@>= {
doing_format=true;
is_macro=false;
@z
diff --git a/Build/source/texk/web2c/cwebdir/cweav-w2c.ch b/Build/source/texk/web2c/cwebdir/cweav-w2c.ch
index 6d350fc405a..b0adceab75a 100644
--- a/Build/source/texk/web2c/cwebdir/cweav-w2c.ch
+++ b/Build/source/texk/web2c/cwebdir/cweav-w2c.ch
@@ -195,7 +195,7 @@ beginning of phase two. We initialize the output variables in a slightly
tricky way so that the first line of the output file will be
`\.{\\input cwebmac}'.
-@<Start \TEX/...@>=
+@<Start \9{t}\TEX/...@>=
out_ptr=out_buf+1; out_line=1; active_file=tex_file;
tex_printf("\\input cwebma"); *out_ptr='c';
@y
@@ -210,7 +210,7 @@ prepended to `\.{cwebmac.tex}', e.g., if you call \.{CWEAVE} with
Without this option the first line of the output file will be
`\.{\\input cwebmac}'.
-@<Start \TEX/...@>=
+@<Start \9{t}\TEX/...@>=
out_ptr=out_buf+1; out_line=1; active_file=tex_file;
tex_puts("\\input ");
tex_printf(use_language);
diff --git a/Build/source/texk/web2c/cwebdir/cweave.w b/Build/source/texk/web2c/cwebdir/cweave.w
index 627fa1fa815..015a3183b8e 100644
--- a/Build/source/texk/web2c/cwebdir/cweave.w
+++ b/Build/source/texk/web2c/cwebdir/cweave.w
@@ -93,7 +93,7 @@ char **av) /* argument values */
program=cweave;
@<Set initial values@>@;
common_init();
- @<Start \TEX/ output@>@;
+ @<Start \9{t}\TEX/ output@>@;
if (show_banner) puts(banner); /* print a ``banner line'' */
@<Store all the reserved words@>@;
phase_one(); /* read all the user's text and store the cross-references */
@@ -1076,9 +1076,9 @@ phase_one(void) {
printf("*%d",(int)section_count);
update_terminal(); /* print a progress report */
}
- @<Store cross-references in the \TEX/ part of a section@>@;
- @<Store cross-references in the definition part of a section@>@;
- @<Store cross-references in the \CEE/ part of a section@>@;
+ @<Store cross-references in the \9{t}\TEX/ part of a section@>@;
+ @<Store cross-references in the \9{d}definition part of a section@>@;
+ @<Store cross-references in the \9{c}\CEE/ part of a section@>@;
if (changed_section[section_count]) change_exists=true;
}
@@ -1155,7 +1155,7 @@ the identifiers in \CEE/ texts enclosed in \pb, or for control texts
enclosed in \.{@@\^}$\,\ldots\,$\.{@@>} or \.{@@.}$\,\ldots\,$\.{@@>}
or \.{@@:}$\,\ldots\,$\.{@@>}.
-@<Store cross-references in the \T...@>=
+@<Store cross-references in the \9{t}\T...@>=
while (true) {
switch (next_control=skip_TeX()) {
case translit_code: err_print("! Use @@l in limbo only"); continue;
@@ -1204,7 +1204,7 @@ static name_pointer res_wd_end; /* pointer to the first nonreserved identifier *
@ When we get to the following code we have |next_control>=format_code|.
-@<Store cross-references in the d...@>=
+@<Store cross-references in the \9{d}d...@>=
while (next_control<=definition) { /* |format_code| or |definition| */
if (next_control==definition) {
xref_switch=def_flag; /* implied \.{@@!} */
@@ -1261,7 +1261,7 @@ else {
@ Finally, when the \TEX/ and definition parts have been treated, we have
|next_control>=begin_C|.
-@<Store cross-references in the \CEE/...@>=
+@<Store cross-references in the \9{c}\CEE/...@>=
if (next_control<=section_name) { /* |begin_C| or |section_name| */
if (next_control==begin_C) section_xref_switch=0;
else {
@@ -1398,7 +1398,7 @@ beginning of phase two. We initialize the output variables in a slightly
tricky way so that the first line of the output file will be
`\.{\\input cwebmac}'.
-@<Start \TEX/...@>=
+@<Start \9{t}\TEX/...@>=
out_ptr=out_buf+1; out_line=1; active_file=tex_file;
tex_printf("\\input cwebma"); *out_ptr='c';
@@ -3420,10 +3420,10 @@ switch (next_control) {
app_scrap(section_scrap,maybe_math);@+
app_scrap(exp,yes_math);@+break;
case string: case constant: case verbatim:
- @<Append a string or constant@>@;@+break;
+ @<Append a \9{s}string or constant@>@;@+break;
case identifier: app_cur_id(true);@+break;
case TeX_string:
- @<Append a \TEX/ string, without forming a scrap@>@;@+break;
+ @<Append a \9{t}\TEX/ string, without forming a scrap@>@;@+break;
case '/': case '.':
app(next_control);@+app_scrap(binop,yes_math);@+break;
case '<': app_str("\\langle");@+app_scrap(prelangle,yes_math);@+break;
@@ -3545,7 +3545,7 @@ Many of the special characters in a string must be prefixed by `\.\\' so that
\TEX/ will print them properly.
@^special string characters@>
-@<Append a string or...@>={@+ int count=-1; /* characters remaining before string break */
+@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */
switch (next_control) {
case constant: app_str("\\T{"@q}@>); break;
@.\\T@>
@@ -3611,7 +3611,7 @@ this bug is probably to enclose the \.{@@t...@@>} in \.{@@[...@@]} so that
the \TEX/ string is treated as an expression.
@^bug, known@>
-@<Append a \TEX/ string, without forming a scrap@>=
+@<Append a \9{t}\TEX/ string, without forming a scrap@>=
app_str("\\hbox{"@q}@>);
@^high-bit character handling@>
while (id_first<id_loc) {
@@ -4183,7 +4183,7 @@ if (show_progress) printf("%s","\nWriting the output file...");
section_count=0; format_visible=true; copy_limbo();
finish_line(); flush_buffer(out_buf,false,false);
/* insert a blank line, it looks nice */
-while (!input_has_ended) @<Translate the current section@>@;
+while (!input_has_ended) @<Translate the \9{c}current section@>@;
}
@ @<Predecl...@>=@+static void phase_two(void);
@@ -4211,13 +4211,13 @@ static boolean format_visible; /* should the next format declaration be output?
static boolean doing_format=false; /* are we outputting a format declaration? */
static boolean group_found=false; /* has a starred section occurred? */
-@ @<Translate the current section@>= {
+@ @<Translate the \9{c}current section@>= {
section_count++;
@<Output the code for the beginning of a new section@>@;
save_position();
- @<Translate the \TEX/ part of the current section@>@;
- @<Translate the definition part of the current section@>@;
- @<Translate the \CEE/ part of the current section@>@;
+ @<Translate the \9{t}\TEX/ part of the current section@>@;
+ @<Translate the \9{d}definition part of the current section@>@;
+ @<Translate the \9{c}\CEE/ part of the current section@>@;
@<Show cross-references to this section@>@;
@<Output the code for the end of a section@>@;
}
@@ -4257,7 +4257,7 @@ out('{'); out_section(section_count); out('}');
@ In the \TEX/ part of a section, we simply copy the source text, except that
index entries are not copied and \CEE/ text within \pb\ is translated.
-@<Translate the \T...@>= do
+@<Translate the \9{t}\T...@>= do
switch (next_control=copy_TeX()) {
case '|': init_stack(); output_C(); break;
case '@@': out('@@'); break;
@@ -4279,12 +4279,12 @@ while (next_control<format_code);
@ When we get to the following code we have |next_control>=format_code|, and
the token memory is in its initial empty state.
-@<Translate the d...@>=
+@<Translate the \9{d}d...@>=
space_checked=false;
while (next_control<=definition) { /* |format_code| or |definition| */
init_stack();
- if (next_control==definition) @<Start a macro definition@>@;
- else @<Start a format definition@>@;
+ if (next_control==definition) @<Start \9{a}a macro definition@>@;
+ else @<Start \9{a}a format definition@>@;
outer_parse(); finish_C(format_visible); format_visible=true;
doing_format=false;
}
@@ -4337,7 +4337,7 @@ if the identifier is not followed by `\.(' at all, the replacement
text starts immediately after the identifier. In the former case,
it starts after we scan the matching `\.)'.
-@<Start a macro...@>= {
+@<Start \9{a}a macro...@>= {
if (save_line!=out_line || save_place!=out_ptr || space_checked) app(backup);
if(!space_checked){emit_space_if_needed();save_position();}
app_str("\\D"); /* this will produce `\#\&{define }' */
@@ -4366,7 +4366,7 @@ it starts after we scan the matching `\.)'.
}
}
-@ @<Start a format...@>= {
+@ @<Start \9{a}a format...@>= {
doing_format=true;
if(*(loc-1)=='s' || *(loc-1)=='S') format_visible=false;
if(!space_checked){emit_space_if_needed();save_position();}
@@ -4394,7 +4394,7 @@ point to the current section name, if it has a name.
@<Private...@>=
static name_pointer this_section; /* the current section name, or zero */
-@ @<Translate the \CEE/...@>=
+@ @<Translate the \9{c}\CEE/...@>=
this_section=name_dir;
if (next_control<=section_name) {
emit_space_if_needed(); init_stack();
diff --git a/Build/source/texk/web2c/cwebdir/cwebacromac.tex b/Build/source/texk/web2c/cwebdir/cwebacromac.tex
index 3e8baad77c1..1743ddd95d6 100644
--- a/Build/source/texk/web2c/cwebdir/cwebacromac.tex
+++ b/Build/source/texk/web2c/cwebdir/cwebacromac.tex
@@ -17,6 +17,16 @@
\let\pdfoutput=\outputmode
\fi % end of LuaTeX->pdfTeX redirection macros
+\def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth
+ attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A
+ << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69
+ \else {\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}%
+ \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight
+ depth \thedepth << /Border [0 0 0] /Type /Annot /Subtype /Link /A
+ << /S /URI /URI (#2) >> >>}\box0\relax}\fi
+ \else #1 ({\tt#2})\fi}
+{\catcode`\~=12 \gdef\TILDE/{~}} % ~ in a URL
+{\catcode`\_=12 \gdef\UNDER/{_}} % _ in a URL
\def\tocpages{1} % Most programs have one-page Table-of-Contents
\def\startpdf{\def\pagemode{/PageMode /UseOutlines}
\ifnum\contentspagenumber=0 \advance \pageno by -\tocpages
@@ -66,8 +76,7 @@
\fi
\else \addtokens\toksC{\the\toksD}\global\havenumtrue
\fi
- \next
-}
+ \next}
\def\makenote{\addtokens\toksB
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\havenumfalse}
\def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
@@ -99,6 +108,7 @@
\afterassignment\makeolproctok\let\nxt= }
\def\makeolnexttok{\afterassignment\makeolproctok\let\nxt= }
\def\makeolgobbletok{\afterassignment\makeolnexttok\let\nxt= }
+\def\makeolgobbletokk{\afterassignment\makeolgobbletok\let\nxt= }
\def\addF#1{\addtokens\toksF{#1}\tokprocessedtrue}
% now comes a routine to "sanitize" section names, for pdf outlines
\def\makeolproctok{\tokprocessedfalse
@@ -109,8 +119,7 @@
\else\ifx^\nxt \addF^\else\ifx_\nxt \addF_% sanitize ^ and _
\else\ifx\nxt\spacechar \addF\space
\else\if\noexpand\nxt\relax % we have a control sequence; is it one we know?
- \ifx\nxt~\addF\space
- \else\ifx\nxt\onespace\addF\space
+ \ifx\nxt~\addF\space \else\ifx\nxt\onespace\addF\space
\else\the\sanitizer
\iftokprocessed\else\makeolproctokctli
\iftokprocessed\else\makeolproctokctlii
@@ -124,8 +133,7 @@
\else\expandafter\makeolproctokchar\meaning\nxt
\fi\fi\fi\fi\fi
\fi\fi\fi\fi\fi \fi\fi\fi
- \next
-}
+ \next}
\def\makeolproctokchar#1 #2 #3{\addF{#3}}
\def\makeolproctokctli{%
\ifx\nxt\CEE\addF{C}\let\next\makeolgobbletok % \CEE/
@@ -133,8 +141,9 @@
\else\ifx\nxt\TEX\addF{TeX}\let\next\makeolgobbletok % \TEX/
\else\ifx\nxt\TeX\addF{TeX}\else\ifx\nxt\LaTeX\addF{LaTeX}%
\else\ifx\nxt\CPLUSPLUS\addF{C++}\let\next\makeolgobbletok % \CPLUSPLUS/
- \else\ifx\nxt\Cee\addF{C}%
+ \else\ifx\nxt\Cee\addF{C}\else\ifx\nxt\dots\addF{...\space}%
\else\ifx\nxt\PB \let\next\makeolgobbletok \tokprocessedtrue % \PB{...}
+ \else\ifx\nxt\9 \expandafter\nxt\relax \let\next\makeolgobbletokk % \9{#1}
\else\ifx\nxt\.\tokprocessedtrue\instrtrue % \.{...}
% skip \|
\else\ifx\nxt\\\ifinstr\addF{\bschar\bschar}\else\tokprocessedtrue\fi
@@ -149,7 +158,7 @@
\else\ifx\nxt\PP\addF{++}\else\ifx\nxt\MM\addF{--}%
\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
}
\def\makeolproctokctlii{%
\ifx\nxt\MG\addF{->}\else\ifx\nxt\GG\addF{>>}%
diff --git a/Build/source/texk/web2c/cwebdir/cwebmac.tex b/Build/source/texk/web2c/cwebdir/cwebmac.tex
index a46dc4b782f..53454300a9a 100644
--- a/Build/source/texk/web2c/cwebdir/cwebmac.tex
+++ b/Build/source/texk/web2c/cwebdir/cwebmac.tex
@@ -132,16 +132,6 @@
\def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}}
\fi
\input cwebacromac % load hypertext macros
-\def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth
- attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A
- << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69
- \else {\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}%
- \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight
- depth \thedepth << /Border [0 0 0] /Type /Annot /Subtype /Link /A
- << /S /URI /URI (#2) >> >>}\box0\relax}\fi
- \else #1 ({\tt#2})\fi}
-{\catcode`\~=12 \gdef\TILDE/{~}} % ~ in a URL
-{\catcode`\_=12 \gdef\UNDER/{_}} % _ in a URL
\def\lapstar{\rlap{*}}
\def\stsec{\rightskip=0pt % get out of C mode (cf. \B)
@@ -242,9 +232,8 @@
\def\p#1{\cdot 2^{#1}} % power of two (hex exponent)
\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue
-\newif\ifon \newif\iftitle \newif\ifpagesaved
+\newif\ifon \newif\iftitle \newif\ifpagesaved \newif\ifheader
-\newif\ifheader
\def\lheader{\headertrue\mainfont\the\pageno\eightrm\qquad\grouptitle
\hfill\title\qquad\mainfont\topsecno} % top line on left-hand pages
\def\rheader{\headertrue\mainfont\topsecno\eightrm\qquad\title\hfill
diff --git a/Build/source/texk/web2c/cwebdir/refsort.ch b/Build/source/texk/web2c/cwebdir/refsort.ch
index 67175b030f7..2ebedfca696 100644
--- a/Build/source/texk/web2c/cwebdir/refsort.ch
+++ b/Build/source/texk/web2c/cwebdir/refsort.ch
@@ -45,12 +45,24 @@ int main()
item *x, **y;
@z
+@x [4] l.83
+ @<Copy |buf| to item |x|@>;
+@y
+ @<Copy \9{b}|buf| to item |x|@>;
+@z
+
@x [5] l.89 variable not used
{ register int k;
@y
{
@z
+@x [6] l.99
+@<Copy |buf|...@>=
+@y
+@<Copy \9{b}|buf|...@>=
+@z
+
@x [9] l.149 'register' removed in C++17
{ register int toggle=0;
@y
diff --git a/Build/source/texk/web2c/euptexdir/ChangeLog b/Build/source/texk/web2c/euptexdir/ChangeLog
index 2f494fb0d90..3a16f5e6ce8 100644
--- a/Build/source/texk/web2c/euptexdir/ChangeLog
+++ b/Build/source/texk/web2c/euptexdir/ChangeLog
@@ -1,3 +1,36 @@
+2024-10-12 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * euptex-prim.test, tests/eup-prim.{tex,log},
+ am/euptex.am: Add a test.
+ * eptex_version.h, eptex.ech:
+ Bump version to 240930.
+
+2024-09-30 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * eptex.ech: kcatcode (latin_ucs(14)) is removed
+ since it will be supported in upTeX-2.00.
+
+2024-09-28 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * euptex-{ctrlsym,kinsoku,prntknj}.test:
+ Skip tests with updvitype if updvitype are not built.
+
+2024-09-21 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * eptex.ech, pdfutils.ch:
+ Better support for kcatcode=20 (modifier).
+ * euptex-{ctrlsym,kinsoku,prntknj,ucs}.test,
+ tests/{control-symbol,ctrlsym.tex,endlinechar,free_{ixsp,pena},
+ inhibitglue,kinsoku_{search,table},postpena,printkanji,ucs}.tex,
+ tests/eup-{endline,inhibitglue,jctrlsym,pknj-{e,s,u}}a.typ,
+ tests/{endline,free_{ixsp,pena},jctrlsym,kinsoku_{search,table},
+ pknj-{e,s,u},postpena,ucs-{e,s,u}}.log:
+ Add regression tests by using Kitagawa-san's and
+ Yamashita-san's sample files.
+ * tests/{free_{ixsp,pena},inhibitglue,kinsoku_{search,table},
+ postpena}.tex: Move from ../ptexdir/tests .
+ * am/euptex.am: Adjust.
+
2024-06-04 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
* unbalanced-braces-eptex.ch, suppresserrors.ch: sync with the upstream
diff --git a/Build/source/texk/web2c/euptexdir/am/euptex.am b/Build/source/texk/web2c/euptexdir/am/euptex.am
index f961b447fcc..e8460a0598f 100644
--- a/Build/source/texk/web2c/euptexdir/am/euptex.am
+++ b/Build/source/texk/web2c/euptexdir/am/euptex.am
@@ -98,16 +98,23 @@ EXTRA_DIST += \
euptex_tests = \
euptexdir/euptriptest.test euptexdir/eptriptest.test \
euptexdir/pdfprimitive.test \
- euptexdir/euptex-ctrlsym.test \
euptexdir/eupver.test \
euptexdir/upkcat.test \
- euptexdir/wcfname.test euptexdir/wcfname0.test
+ euptexdir/wcfname.test euptexdir/wcfname0.test \
+ euptexdir/euptex-ctrlsym.test \
+ euptexdir/euptex-prntknj.test \
+ euptexdir/euptex-kinsoku.test \
+ euptexdir/euptex-prim.test \
+ euptexdir/euptex-ucs.test
euptexdir/euptriptest.log euptexdir/eptriptest.log: \
euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
euptexdir/pdfprimitive.log: euptex$(EXEEXT)
-euptexdir/euptex-ctrlsym.log \
- euptexdir/eupver.log euptexdir/upkcat.log \
- euptexdir/wcfname.log euptexdir/wcfname0.log: euptex$(EXEEXT)
+euptexdir/eupver.log euptexdir/upkcat.log \
+ euptexdir/wcfname.log euptexdir/wcfname0.log \
+ euptexdir/euptex-ctrlsym.log euptexdir/euptex-prntknj.log \
+ euptexdir/euptex-kinsoku.log \
+ euptexdir/euptex-prim.log \
+ euptexdir/euptex-ucs.log: euptex$(EXEEXT)
EXTRA_DIST += $(euptex_tests)
@@ -125,11 +132,6 @@ EXTRA_DIST += \
euptexdir/eptrip/eptrip.tex \
euptexdir/euptrip/euptrip.diffs \
euptexdir/euptrip/texmf.cnf
-euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
- $(triptrap_diffs) $@
-.PHONY: euptrip-clean
-euptrip-clean:
- rm -rf euptripdir
DISTCLEANFILES += euptrip.diffs
## euptexdir/pdfprimitive.test
EXTRA_DIST += \
@@ -139,7 +141,38 @@ EXTRA_DIST += \
DISTCLEANFILES += pdfprimitive-euptex.*
## euptex-ctrlsym.test
-EXTRA_DIST += euptexdir/tests/ctrlsym.log euptexdir/tests/ctrlsym.tex
-DISTCLEANFILES += eup-ctrlsym.fmt eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex
+EXTRA_DIST += euptexdir/tests/ctrlsym.tex euptexdir/tests/ctrlsym.log \
+ euptexdir/tests/endlinechar.tex euptexdir/tests/endline.log \
+ euptexdir/tests/control-symbol.tex euptexdir/tests/jctrlsym.log \
+ euptexdir/tests/eup-endlinea.typ euptexdir/tests/eup-jctrlsyma.typ
+DISTCLEANFILES += eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex \
+ eup-endline*.* eup-jctrlsym*.*
+## euptex-prntknj.test
+EXTRA_DIST += euptexdir/tests/printkanji.tex euptexdir/tests/pknj-s.log \
+ euptexdir/tests/pknj-e.log euptexdir/tests/pknj-u.log \
+ euptexdir/tests/eup-pknj-sa.typ euptexdir/tests/eup-pknj-ea.typ \
+ euptexdir/tests/eup-pknj-ua.typ
+DISTCLEANFILES += eup-pknj-*.*
+## euptex-kinsoku.test
+EXTRA_DIST += euptexdir/tests/postpena.tex euptexdir/tests/postpena.log \
+ euptexdir/tests/free_ixsp.tex euptexdir/tests/free_ixsp.log \
+ euptexdir/tests/free_pena.tex euptexdir/tests/free_pena.log \
+ euptexdir/tests/inhibitglue.tex euptexdir/tests/eup-inhibitgluea.typ \
+ euptexdir/tests/kinsoku-table.tex euptexdir/tests/kinsoku-table.log \
+ euptexdir/tests/kinsoku-search.tex euptexdir/tests/kinsoku-search.log
+DISTCLEANFILES += eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.*
+## euptex-prim.test
+EXTRA_DIST += euptexdir/tests/eup-prim.tex euptexdir/tests/eup-prim.log
+DISTCLEANFILES += eup-prim.*
+## euptex-ucs.test
+EXTRA_DIST += euptexdir/tests/ucs.tex euptexdir/tests/ucs-s.log \
+ euptexdir/tests/ucs-e.log euptexdir/tests/ucs-u.log
+DISTCLEANFILES += eup-ucs*.*
+
+euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
+ $(triptrap_diffs) $@
+.PHONY: euptrip-clean
+euptrip-clean:
+ rm -rf euptripdir
# (end of euptex.am)
diff --git a/Build/source/texk/web2c/euptexdir/eptex.ech b/Build/source/texk/web2c/euptexdir/eptex.ech
index a33ecad2bf3..8a6ecd76418 100644
--- a/Build/source/texk/web2c/euptexdir/eptex.ech
+++ b/Build/source/texk/web2c/euptexdir/eptex.ech
@@ -33,8 +33,8 @@
@y
@d eTeX_version_string=='-2.6' {current \eTeX\ version}
@#
-@d epTeX_version_string=='-230214'
-@d epTeX_version_number==230214
+@d epTeX_version_string=='-240930'
+@d epTeX_version_number==240930
@z
@x e-upTeX: banner
@@ -309,6 +309,14 @@ end
@d if_tdir_code=if_case_code+4 { `\.{\\iftdir}' }
@z
+@x procedure conditional
+@!m,@!n:integer; {to be tested against the second operand}
+@!p,@!q:pointer; {for traversing token lists in \.{\\ifx} tests}
+@y
+@!m,@!n,@!s,@!v,@!nn,@!jj:integer; {to be tested against the second operand}
+@!p,@!q:pointer; {for traversing token lists in \.{\\ifx} tests}
+@z
+
@x [30.???] |scan_font_ident|: recognize \lastnodefont
else begin print_err("Missing font identifier");
@y
@@ -721,7 +729,6 @@ if j=1 then
if (multistrlen(ustringcast(buffer), limit+1,loc)>1)and
check_kcat_code(cur_tok,cur_chr) then
begin if (cur_tok=not_cjk) then cur_tok:=other_kchar;
- if (cur_tok=latin_ucs) then cur_tok:=other_token;
cur_tok:=cur_chr+cur_tok*max_cjk_val;
loc:=loc+multistrlen(ustringcast(buffer), limit+1,loc);
end
@@ -736,13 +743,35 @@ if j=1 then
@y
if check_kanji(info(p)) then {|wchar_token|}
begin
- if BYTE1(toBUFF(info(p) mod max_cjk_val))<>0 then
- begin buffer[m]:=BYTE1(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end;
- if BYTE2(toBUFF(info(p) mod max_cjk_val))<>0 then
- begin buffer[m]:=BYTE2(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end;
- if BYTE3(toBUFF(info(p) mod max_cjk_val))<>0 then
- begin buffer[m]:=BYTE3(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end;
- buffer[m]:=BYTE4(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m);
+ if (isinternalUPTEX) then begin
+ s:=toUCS(ktokentochr(info(p)));
+ nn:=UVSgetcodepointlength(s);
+ jj:=1;
+ while jj<=nn do begin
+ v:=UVSgetcodepointinsequence(s,jj);
+ if (v>0) then begin
+ v:=UCStoUTF8(v);
+ if BYTE1(v)<>0 then
+ begin buffer[m]:=BYTE1(v); buffer2[m]:=1; incr(m); end;
+ if BYTE2(v)<>0 then
+ begin buffer[m]:=BYTE2(v); buffer2[m]:=1; incr(m); end;
+ if BYTE3(v)<>0 then
+ begin buffer[m]:=BYTE3(v); buffer2[m]:=1; incr(m); end;
+ buffer[m]:=BYTE4(v); buffer2[m]:=1; incr(m);
+ end;
+ incr(jj);
+ end
+ end
+ else begin
+ v:=toBUFF(info(p) mod max_cjk_val);
+ if BYTE1(v)<>0 then
+ begin buffer[m]:=BYTE1(v); buffer2[m]:=1; incr(m); end;
+ if BYTE2(v)<>0 then
+ begin buffer[m]:=BYTE2(v); buffer2[m]:=1; incr(m); end;
+ if BYTE3(v)<>0 then
+ begin buffer[m]:=BYTE3(v); buffer2[m]:=1; incr(m); end;
+ buffer[m]:=BYTE4(v); buffer2[m]:=1; incr(m);
+ end;
p:=link(p);
end
else
diff --git a/Build/source/texk/web2c/euptexdir/eptex_version.h b/Build/source/texk/web2c/euptexdir/eptex_version.h
index 297bd81e7f3..f17d53a02c0 100644
--- a/Build/source/texk/web2c/euptexdir/eptex_version.h
+++ b/Build/source/texk/web2c/euptexdir/eptex_version.h
@@ -1 +1 @@
-#define EPTEX_VERSION "230214"
+#define EPTEX_VERSION "240930"
diff --git a/Build/source/texk/web2c/euptexdir/euptex-ctrlsym.test b/Build/source/texk/web2c/euptexdir/euptex-ctrlsym.test
index 294e0cf0bf1..7284d8c6c35 100755
--- a/Build/source/texk/web2c/euptexdir/euptex-ctrlsym.test
+++ b/Build/source/texk/web2c/euptexdir/euptex-ctrlsym.test
@@ -5,24 +5,59 @@
BinDir=${BinDir:-.}
ExeExt=${ExeExt:-}
_euptex=$BinDir/euptex$ExeExt
+_updvitype=$BinDir/updvitype$ExeExt
LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFONTS=".;$srcdir//tests"; export TEXFONTS
TEXFORMATS=.; export TEXFORMATS
-# get same filename in log
-rm -f eup-ctrlsym.tex
-$LN_S $srcdir/euptexdir/tests/ctrlsym.tex ./eup-ctrlsym.tex
-
-#exit 77
+rm -f eup-ctrlsym.* eup-endline*.* eup-jctrlsym*.*
-$_euptex -ini -etex eup-ctrlsym || exit 1
+if test ! -f ./eup-basic.tex; then
+ cp $srcdir/tests/dump-basic.tex ./eup-basic.tex
+fi
+if test ! -f ./eup-basic.fmt; then
+ $_euptex -ini -etex eup-basic || exit 1
+fi
-$_euptex -etex -fmt=eup-ctrlsym eup-ctrlsym || exit 2
+# ctrlsym.tex
+$LN_S $srcdir/euptexdir/tests/ctrlsym.tex ./eup-ctrlsym.tex
+$_euptex -etex -fmt=eup-basic eup-ctrlsym || exit 2
sed 1d eup-ctrlsym.log >eup-ctrlsym.out
diff $srcdir/euptexdir/tests/ctrlsym.log eup-ctrlsym.out || exit 3
+
+# endlinchar.tex
+$LN_S $srcdir/euptexdir/tests/endlinechar.tex ./eup-endline.tex
+$_euptex -fmt=eup-basic -interaction=batchmode eup-endline.tex || :
+
+sed 1d eup-endline.log >eup-endline.out
+
+diff $srcdir/euptexdir/tests/endline.log eup-endline.out || exit 4
+
+if test -f $_updvitype; then
+ $_updvitype ./eup-endline.dvi >euptests/xeup-endline.typ
+ sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-endline.typ >euptests/xeup-endlinea.typ
+ diff $srcdir/euptexdir/tests/eup-endlinea.typ euptests/xeup-endlinea.typ || exit 5
+fi
+
+
+# control-symbol.tex
+$LN_S $srcdir/euptexdir/tests/control-symbol.tex ./eup-jctrlsym.tex
+$_euptex -fmt=eup-basic -interaction=batchmode eup-jctrlsym.tex || :
+
+sed 1d eup-jctrlsym.log >eup-jctrlsym.out
+
+diff $srcdir/euptexdir/tests/jctrlsym.log eup-jctrlsym.out || exit 6
+
+if test -f $_updvitype; then
+ $_updvitype ./eup-jctrlsym.dvi >euptests/xeup-jctrlsym.typ
+ sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-jctrlsym.typ >euptests/xeup-jctrlsyma.typ
+ diff $srcdir/euptexdir/tests/eup-jctrlsyma.typ euptests/xeup-jctrlsyma.typ || exit 7
+fi
+
diff --git a/Build/source/texk/web2c/euptexdir/euptex-kinsoku.test b/Build/source/texk/web2c/euptexdir/euptex-kinsoku.test
new file mode 100755
index 00000000000..307b1dd6d5a
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/euptex-kinsoku.test
@@ -0,0 +1,69 @@
+#! /bin/sh -vx
+# Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_euptex=$BinDir/euptex$ExeExt
+_updvitype=$BinDir/updvitype$ExeExt
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFONTS=".;$srcdir//tests"; export TEXFONTS
+TEXFORMATS=.; export TEXFORMATS
+
+rm -f eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.*
+
+if test ! -f ./eup-basic.tex; then
+ cp $srcdir/tests/dump-basic.tex ./eup-basic.tex
+fi
+if test ! -f ./eup-basic.fmt; then
+ $_euptex -ini -etex eup-basic || exit 1
+fi
+
+# postpena.tex
+$LN_S $srcdir/euptexdir/tests/postpena.tex ./eup-postpena.tex
+$_euptex -fmt=eup-basic -interaction=batchmode eup-postpena.tex || :
+
+sed 1d eup-postpena.log >eup-postpena.out
+
+diff $srcdir/euptexdir/tests/postpena.log eup-postpena.out || exit 3
+
+
+# free_ixsp.tex, free_pena.tex
+$LN_S $srcdir/euptexdir/tests/free_ixsp.tex ./eup-free_ixsp.tex
+$LN_S $srcdir/euptexdir/tests/free_pena.tex ./eup-free_pena.tex
+$_euptex -fmt=eup-basic -interaction=batchmode eup-free_ixsp.tex || :
+$_euptex -fmt=eup-basic -interaction=batchmode eup-free_pena.tex || :
+
+sed 1d eup-free_ixsp.log >eup-free_ixsp.out
+sed 1d eup-free_pena.log >eup-free_pena.out
+
+diff $srcdir/euptexdir/tests/free_ixsp.log eup-free_ixsp.out || exit 4
+diff $srcdir/euptexdir/tests/free_pena.log eup-free_pena.out || exit 5
+
+
+# inhibitglue.tex
+$LN_S $srcdir/euptexdir/tests/inhibitglue.tex ./eup-inhibitglue.tex
+$_euptex -fmt=eup-basic -interaction=batchmode eup-inhibitglue.tex || :
+
+if test -f $_updvitype; then
+ $_updvitype ./eup-inhibitglue.dvi >euptests/xeup-inhibitglue.typ
+ sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-inhibitglue.typ >euptests/xeup-inhibitgluea.typ
+ diff $srcdir/euptexdir/tests/eup-inhibitgluea.typ euptests/xeup-inhibitgluea.typ || exit 7
+fi
+
+# kinsoku_table.tex, kinsoku_search.tex
+$LN_S $srcdir/euptexdir/tests/kinsoku_table.tex ./eup-kinsoku_table.tex
+$LN_S $srcdir/euptexdir/tests/kinsoku_search.tex ./eup-kinsoku_search.tex
+$_euptex -fmt=eup-basic -interaction=batchmode eup-kinsoku_table.tex || :
+$_euptex -fmt=eup-basic -interaction=batchmode eup-kinsoku_search.tex || :
+
+sed 1d eup-kinsoku_table.log >eup-kinsoku_table.out
+sed 1d eup-kinsoku_search.log >eup-kinsoku_search.out
+
+diff $srcdir/euptexdir/tests/kinsoku_table.log eup-kinsoku_table.out || exit 8
+diff $srcdir/euptexdir/tests/kinsoku_search.log eup-kinsoku_search.out || exit 9
+
diff --git a/Build/source/texk/web2c/euptexdir/euptex-prim.test b/Build/source/texk/web2c/euptexdir/euptex-prim.test
new file mode 100755
index 00000000000..5ec6e09d151
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/euptex-prim.test
@@ -0,0 +1,30 @@
+#! /bin/sh -vx
+# Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_euptex=$BinDir/euptex$ExeExt
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+OFMFONTS=".;$srcdir/tests"; export OFMFONTS
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFORMATS=.; export TEXFORMATS
+
+# get same filename in log
+rm -f eup-prim.*
+$LN_S $srcdir/euptexdir/tests/eup-prim.tex ./eup-prim.tex
+
+if test ! -f ./eup-basic.fmt; then
+ cp $srcdir/tests/dump-basic.tex ./eup-basic.tex
+ $_euptex -ini -etex eup-basic || exit 1
+fi
+
+$_euptex -fmt=eup-basic -interaction=batchmode eup-prim || :
+
+sed 1d eup-prim.log >eup-prim.out
+
+diff $srcdir/euptexdir/tests/eup-prim.log eup-prim.out || exit 3
+
diff --git a/Build/source/texk/web2c/euptexdir/euptex-prntknj.test b/Build/source/texk/web2c/euptexdir/euptex-prntknj.test
new file mode 100755
index 00000000000..a8dfa84c271
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/euptex-prntknj.test
@@ -0,0 +1,61 @@
+#! /bin/sh -vx
+# Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_euptex=$BinDir/euptex$ExeExt
+_updvitype=$BinDir/updvitype$ExeExt
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+OFMFONTS=".;$srcdir/tests"; export OFMFONTS
+TFMFONTS=".;$srcdir//tests"; export TFMFONTS
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFORMATS=.; export TEXFORMATS
+
+rm -f eup-pknj-*.*
+$LN_S $srcdir/euptexdir/tests/printkanji.tex ./printkanji.tex
+
+if test ! -f ./eup-basic.tex; then
+ cp $srcdir/tests/dump-basic.tex ./eup-basic.tex
+fi
+if test ! -f ./eup-basic-sjis.fmt; then
+ $_euptex -ini -etex -kanji-internal=sjis -jobname=eup-basic-sjis eup-basic || exit 1
+fi
+if test ! -f ./eup-basic-euc.fmt; then
+ $_euptex -ini -etex -kanji-internal=euc -jobname=eup-basic-euc eup-basic || exit 2
+fi
+if test ! -f ./eup-basic.fmt; then
+ $_euptex -ini -etex -kanji-internal=uptex -jobname=eup-basic eup-basic || exit 3
+fi
+
+$_euptex -fmt=eup-basic-sjis -kanji-internal=sjis -jobname=eup-pknj-s -interaction=batchmode printkanji || :
+$_euptex -fmt=eup-basic-euc -kanji-internal=euc -jobname=eup-pknj-e -interaction=batchmode printkanji || :
+$_euptex -fmt=eup-basic -jobname=eup-pknj-u -interaction=batchmode printkanji || :
+
+sed "1d;s/strings out of 497[67]..$/strings out of 497XXX/;s/characters out of 6215[789]..$/characters out of 6215XXX/" eup-pknj-s.log >eup-pknj-s.out
+sed "1d;s/strings out of 497[67]..$/strings out of 497XXX/;s/characters out of 6215[789]..$/characters out of 6215XXX/" eup-pknj-e.log >eup-pknj-e.out
+sed "1d;s/strings out of 497[67]..$/strings out of 497XXX/;s/characters out of 6215[789]..$/characters out of 6215XXX/" eup-pknj-u.log >eup-pknj-u.out
+
+diff $srcdir/euptexdir/tests/pknj-s.log eup-pknj-s.out || exit 10
+diff $srcdir/euptexdir/tests/pknj-e.log eup-pknj-e.out || exit 11
+diff $srcdir/euptexdir/tests/pknj-u.log eup-pknj-u.out || exit 12
+
+if test ! -f $_updvitype; then
+ exit 0
+fi
+
+$_updvitype ./eup-pknj-s.dvi >euptests/xeup-pknj-s.typ
+$_updvitype ./eup-pknj-e.dvi >euptests/xeup-pknj-e.typ
+$_updvitype ./eup-pknj-u.dvi >euptests/xeup-pknj-u.typ
+
+sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-pknj-s.typ >euptests/xeup-pknj-sa.typ
+sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-pknj-e.typ >euptests/xeup-pknj-ea.typ
+sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-pknj-u.typ >euptests/xeup-pknj-ua.typ
+
+diff $srcdir/euptexdir/tests/eup-pknj-sa.typ euptests/xeup-pknj-sa.typ || exit 20
+diff $srcdir/euptexdir/tests/eup-pknj-ea.typ euptests/xeup-pknj-ea.typ || exit 21
+diff $srcdir/euptexdir/tests/eup-pknj-ua.typ euptests/xeup-pknj-ua.typ || exit 22
+
diff --git a/Build/source/texk/web2c/euptexdir/euptex-ucs.test b/Build/source/texk/web2c/euptexdir/euptex-ucs.test
new file mode 100755
index 00000000000..764f6e93a9d
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/euptex-ucs.test
@@ -0,0 +1,43 @@
+#! /bin/sh -vx
+# Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_euptex=$BinDir/euptex$ExeExt
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+OFMFONTS=".;$srcdir/tests"; export OFMFONTS
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFORMATS=.; export TEXFORMATS
+
+rm -f eup-ucs*.*
+$LN_S $srcdir/euptexdir/tests/ucs.tex ./eup-ucs.tex
+
+if test ! -f ./eup-basic.tex; then
+ cp $srcdir/tests/dump-basic.tex ./eup-basic.tex
+fi
+if test ! -f ./eup-basic-sjis.fmt; then
+ $_euptex -ini -etex -kanji-internal=sjis -jobname=eup-basic-sjis eup-basic || exit 1
+fi
+if test ! -f ./eup-basic-euc.fmt; then
+ $_euptex -ini -etex -kanji-internal=euc -jobname=eup-basic-euc eup-basic || exit 2
+fi
+if test ! -f ./eup-basic.fmt; then
+ $_euptex -ini -etex -kanji-internal=uptex -jobname=eup-basic eup-basic || exit 3
+fi
+
+$_euptex -fmt=eup-basic-sjis -kanji-internal=sjis -jobname=eup-ucs-s -interaction=batchmode eup-ucs || exit 4
+$_euptex -fmt=eup-basic-euc -kanji-internal=euc -jobname=eup-ucs-e -interaction=batchmode eup-ucs || exit 5
+$_euptex -fmt=eup-basic -jobname=eup-ucs-u -interaction=batchmode eup-ucs || exit 6
+
+sed 1d eup-ucs-s.log >eup-ucs-s.out
+sed 1d eup-ucs-e.log >eup-ucs-e.out
+sed 1d eup-ucs-u.log >eup-ucs-u.out
+
+diff $srcdir/euptexdir/tests/ucs-s.log eup-ucs-s.out || exit 10
+diff $srcdir/euptexdir/tests/ucs-e.log eup-ucs-e.out || exit 11
+diff $srcdir/euptexdir/tests/ucs-u.log eup-ucs-u.out || exit 12
+
diff --git a/Build/source/texk/web2c/euptexdir/pdfutils.ch b/Build/source/texk/web2c/euptexdir/pdfutils.ch
index f62a48be121..8d22773233b 100644
--- a/Build/source/texk/web2c/euptexdir/pdfutils.ch
+++ b/Build/source/texk/web2c/euptexdir/pdfutils.ch
@@ -1176,7 +1176,7 @@ Ucharcat_convert_code:
and (illegal_Ucharcat_wchar_catcode(cur_val)) then
begin print_err("Invalid code ("); print_int(cur_val);
@.Invalid code@>
- print("), should be in the ranges 1..4, 6..8, 10..13, 16..19");
+ print("), should be in the ranges 1..4, 6..8, 10..13, 16..20");
help1("I'm going to use 12 instead of that illegal code value.");@/
error; cat:=12;
end else cat:=cur_val;
@@ -1184,7 +1184,7 @@ Ucharcat_convert_code:
begin if illegal_Ucharcat_wchar_catcode(cur_val) then
begin print_err("Invalid code ("); print_int(cur_val);
@.Invalid code@>
- print("), should be in the ranges 16..19");
+ print("), should be in the ranges 16..20");
help1("I'm going to use 18 instead of that illegal code value.");@/
error; cat:=other_kchar;
end else cat:=cur_val;
diff --git a/Build/source/texk/web2c/euptexdir/tests/control-symbol.tex b/Build/source/texk/web2c/euptexdir/tests/control-symbol.tex
new file mode 100644
index 00000000000..be05906602d
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/control-symbol.tex
@@ -0,0 +1,108 @@
+\scrollmode
+% plain TeX ソース
+\font\cmr=cmr10\cmr
+\ifx\kanjiskip\undefined\else
+ \ifnum\jis"2121="3000
+ \jfont\jpy=umin10 at 10pt\jpy
+ \else
+ \jfont\jpy=min10 at 10pt\jpy
+ \fi
+\fi
+
+\def\+{A}
+\def\+{A}
+\def\X{\+}
+\def\Y{\+}
+
+\message{■control symbol}
+% 記号類扱いの単文字命令 → control symbol
+% (この時の和文文字の挙動が tex-jp-build#37 の問題)
+\ifx\kanjiskip\undefined
+ \catcode`\+=12
+ \catcode`\+=12
+\else
+ \catcode`\+=12
+ \kcatcode`+=18
+\fi
+\show\X\relax\message{(\meaning\X)}
+\show\Y\relax\message{(\meaning\Y)}
+
+\message{■control word}
+% 普通の文字扱いの単文字命令 → control word
+\ifx\kanjiskip\undefined
+ \catcode`\+=11
+ \catcode`\+=11
+\else
+ \catcode`\+=11
+ \kcatcode`+=17
+\fi
+\show\X\relax\message{(\meaning\X)}
+\show\Y\relax\message{(\meaning\Y)}
+
+\message{■control word}
+% 複数文字命令 → control word
+\def\ABC{A}
+\def\あいう{A}
+\def\X{\ABC}
+\def\Y{\あいう}
+\show\X\relax\message{(\meaning\X)}
+\show\Y\relax\message{(\meaning\Y)}
+
+% csname
+\ifx\protected\undefined\else
+\catcode`\:=12
+\ifx\kanjiskip\undefined\else
+\kcatcode`!=18
+\fi
+\message{■csname}
+\protected\expandafter\def\csname :AB\endcsname{A}
+\protected\expandafter\def\csname !あい\endcsname{A}
+\edef\X{\csname :AB\endcsname}
+\edef\Y{\csname !あい\endcsname}
+\show\X\relax\message{(\meaning\X)}
+\show\Y\relax\message{(\meaning\Y)}
+
+\protected\expandafter\def\csname AB:\endcsname{A}
+\protected\expandafter\def\csname あい!\endcsname{A}
+\edef\X{\csname AB:\endcsname}
+\edef\Y{\csname あい!\endcsname}
+\show\X\relax\message{(\meaning\X)}
+\show\Y\relax\message{(\meaning\Y)}
+
+\ifx\enablecjktoken\undefined\else
+\message{■not_cjk}
+\kcatcode`ア=15
+\kcatcode`!=15
+\catcode"8A=12\relax
+\protected\expandafter\def\csname ア\endcsname{A}
+\protected\expandafter\def\csname !\endcsname{A}
+\edef\X{\csname ア\endcsname}
+\edef\Y{\csname !\endcsname}
+\show\X\relax\message{(\meaning\X)}
+\show\Y\relax\message{(\meaning\Y)}
+\fi
+\fi
+
+\message{■行末の和文コントロールシンボル}
+
+
+\kcatcode`】=18
+
+\def\】{◆}
+\def\@{◆}
+
+1. \】◇,\@◇
+
+2. \】%
+◇, \@%
+◇
+
+3. \】
+◇, \@
+◇
+
+4. \】 ◇, \@ ◇
+
+
+\end
+
diff --git a/Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex b/Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex
index f007708a2bc..d84a541707b 100644
--- a/Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex
+++ b/Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex
@@ -19,7 +19,8 @@
\count255=`\雪 \relax
\message{B: \the\count255. 雪\string\雪 \雪^^J}
\message{\expandafter\meaning\csname 雪\endcsname.^^J}
- \message{\expandafter\meaning\csname \Uchar"96EA\endcsname.^^J}%
+ \ifx\Uchar\undefined\else\message{\expandafter\meaning\csname \Uchar"96EA\endcsname.^^J}\fi%
+ \ifnum\jis"2121="3000
\count4095=0
\count4095=`🍌 \relax
\message{^^JC: \the\count4095^^J}
@@ -27,7 +28,8 @@
\count4095=`\🍌 \relax
\message{D: \the\count4095. 🍌\string\🍌 \🍌^^J}
\message{\expandafter\meaning\csname 🍌\endcsname.^^J}
- \message{\expandafter\meaning\csname \Uchar"1F34C\endcsname.^^J}%
+ \ifx\Uchar\undefined\else\message{\expandafter\meaning\csname \Uchar"1F34C\endcsname.^^J}\fi%
+ \fi
%--
\setbox0=\vbox{} % no dvi/xdv/pdf output
\endgroup
diff --git a/Build/source/texk/web2c/euptexdir/tests/endline.log b/Build/source/texk/web2c/euptexdir/tests/endline.log
new file mode 100644
index 00000000000..3c0524db173
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/endline.log
@@ -0,0 +1,43 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-endline.tex
+(./eup-endline.tex
+! Undefined control sequence.
+l.29 7a\^^e3
+ ^^81^^82b\^^e3^^81^^82
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.29 7a\^^e3^^81^^82b\^^e3
+ ^^81^^82
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.38 8a\^^e3^^81^^82
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.42 9a\^^e3^^81^^82
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+[1] )
+Output written on eup-endline.dvi (1 page, 256 bytes).
diff --git a/Build/source/texk/web2c/euptexdir/tests/endlinechar.tex b/Build/source/texk/web2c/euptexdir/tests/endlinechar.tex
new file mode 100644
index 00000000000..5dc8de812e7
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/endlinechar.tex
@@ -0,0 +1,57 @@
+\font\x=ec-lmr10 \x
+\parindent0pt\noautoxspacing
+\output{\shipout\box255}
+\def\あ{PPP}
+\def\,{QQQ}
+
+1a\,
+% --> 1aQQQ
+
+2a\あ
+% --> 2aPPP
+
+\endlinechar=-1\relax
+
+3a\,
+% --> 3aQQQ
+% previous pTeX, upTeX: Undefined cs.
+
+4a\あ
+% --> 4aPPP
+% prev. pTeX: Undefined cs.
+
+5a,
+% prev. upTeX: byte-seq.
+
+6aあ
+% prev. upTeX: byte-seq.
+
+7a\^^e3^^81^^82b\^^e3^^81^^82
+% 2回エラーが出るが,これは正しい.
+
+% upTeX only tests
+\ifx\enablecjktoken\undefined
+\else
+ \catcode"E3=11\relax
+ \catcode"81=11\relax
+ \catcode"82=11\relax
+ 8a\^^e3^^81^^82
+ % (p3.10.0-u1.27) --> 8aPPP
+ % (p4.0.0-u1.27) --> エラー 8a
+ \kcatcode`あ=15\relax
+ 9a\あ
+ % == 9a\^^e3^^81^^82.
+ % (p3.10.0-u1.27) --> 9aPPP
+ % (p4.0.0-u1.27) --> エラー 9a
+ \def\^^e3^^81^^82{RRR}
+ 10a\あ b\あ
+ % == 10a\^^e3^^81^^82 b\^^e3^^81^^82. --> 10aRRRbRRR
+ \kcatcode12354=16\relax
+ 11a\あ b\あ
+ % == 11a\^^e3^^81^^82 b\^^e3^^81^^82.
+ % (p3.10.0-u1.27) --> 11aRRRbRRR
+ % (p4.0.0-u1.27) --> 11aPPPbPPP
+\fi
+
+\bye
+
diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-endlinea.typ b/Build/source/texk/web2c/euptexdir/tests/eup-endlinea.typ
new file mode 100644
index 00000000000..1cbfa6b7501
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/eup-endlinea.typ
@@ -0,0 +1,93 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 191.
+maxv=42152922, maxh=30785863, maxstackdepth=1, totalpages=1
+Font 0: ec-lmr10---loaded at size 655360 DVI units
+
+42: beginning of page 1
+87: down3 655360 v:=0+655360=655360, vv:=42
+91: push
+level 0:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+92: fntdef1 0: ec-lmr10
+116: fntnum0 current font is ec-lmr10
+117: setchar49 ("31) h:=0+327680=327680, hh:=21
+118: setchar97 ("61) h:=327680+327680=655360, hh:=42
+119: setchar81 ("51) h:=655360+509738=1165098, hh:=74
+120: setchar81 ("51) h:=1165098+509738=1674836, hh:=106
+121: setchar81 ("51) h:=1674836+509738=2184574, hh:=138
+[1aQQQ]
+122: pop
+level 0:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+123: y3 786432 v:=655360+786432=1441792, vv:=91
+127: push
+level 0:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+128: setchar50 ("32) h:=0+327680=327680, hh:=21
+129: setchar97 ("61) h:=327680+327680=655360, hh:=42
+130: setchar80 ("50) h:=655360+446005=1101365, hh:=70
+131: setchar80 ("50) h:=1101365+446005=1547370, hh:=98
+132: setchar80 ("50) h:=1547370+446005=1993375, hh:=126
+[2aPPP]
+133: pop
+level 0:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+134: y0 786432 v:=1441792+786432=2228224, vv:=141
+135: push
+level 0:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+136: setchar51 ("33) h:=0+327680=327680, hh:=21
+137: setchar97 ("61) h:=327680+327680=655360, hh:=42
+138: setchar81 ("51) h:=655360+509738=1165098, hh:=74
+139: setchar81 ("51) h:=1165098+509738=1674836, hh:=106
+140: setchar81 ("51) h:=1674836+509738=2184574, hh:=138
+141: setchar52 ("34) h:=2184574+327680=2512254, hh:=159
+142: setchar97 ("61) h:=2512254+327680=2839934, hh:=180
+143: setchar80 ("50) h:=2839934+446005=3285939, hh:=208
+144: setchar80 ("50) h:=3285939+446005=3731944, hh:=236
+145: setchar80 ("50) h:=3731944+446005=4177949, hh:=264
+146: setchar53 ("35) h:=4177949+327680=4505629, hh:=285
+147: setchar97 ("61) h:=4505629+327680=4833309, hh:=306
+148: setchar54 ("36) h:=4833309+327680=5160989, hh:=327
+149: setchar97 ("61) h:=5160989+327680=5488669, hh:=348
+150: setchar55 ("37) h:=5488669+327680=5816349, hh:=369
+151: setchar97 ("61) h:=5816349+327680=6144029, hh:=390
+[3aQQQ4aPPP5a6a7a]
+152: set1 129("81) h:=6144029+491520=6635549, hh:=421
+154: w2 -18205 h:=6635549-18205=6617344, hh:=420
+157: set1 130("82) h:=6617344+473301=7090645, hh:=450
+159: setchar98 ("62) h:=7090645+364085=7454730, hh:=473
+[b]
+160: set1 129("81) h:=7454730+491520=7946250, hh:=504
+162: w0 -18205 h:=7946250-18205=7928045, hh:=503
+163: set1 130("82) h:=7928045+473301=8401346, hh:=533
+165: setchar56 ("38) h:=8401346+327680=8729026, hh:=554
+166: setchar97 ("61) h:=8729026+327680=9056706, hh:=575
+167: setchar57 ("39) h:=9056706+327680=9384386, hh:=596
+168: setchar97 ("61) h:=9384386+327680=9712066, hh:=617
+169: setchar49 ("31) h:=9712066+327680=10039746, hh:=638
+170: setchar48 ("30) h:=10039746+327680=10367426, hh:=659
+171: setchar97 ("61) h:=10367426+327680=10695106, hh:=679
+172: setchar82 ("52) h:=10695106+482410=11177516, hh:=710
+173: setchar82 ("52) h:=11177516+482410=11659926, hh:=741
+174: setchar82 ("52) h:=11659926+482410=12142336, hh:=771
+175: setchar98 ("62) h:=12142336+364085=12506421, hh:=794
+176: setchar82 ("52) h:=12506421+482410=12988831, hh:=825
+177: setchar82 ("52) h:=12988831+482410=13471241, hh:=855
+178: setchar82 ("52) h:=13471241+482410=13953651, hh:=886
+179: setchar49 ("31) h:=13953651+327680=14281331, hh:=907
+180: setchar49 ("31) h:=14281331+327680=14609011, hh:=927
+181: setchar97 ("61) h:=14609011+327680=14936691, hh:=948
+182: setchar80 ("50) h:=14936691+446005=15382696, hh:=976
+183: setchar80 ("50) h:=15382696+446005=15828701, hh:=1004
+184: setchar80 ("50) h:=15828701+446005=16274706, hh:=1032
+185: setchar98 ("62) h:=16274706+364085=16638791, hh:=1055
+186: setchar80 ("50) h:=16638791+446005=17084796, hh:=1083
+187: setchar80 ("50) h:=17084796+446005=17530801, hh:=1111
+188: setchar80 ("50) h:=17530801+446005=17976806, hh:=1139
+[8a9a10aRRRbRRR11aPPPbPPP]
+189: pop
+level 0:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+190: eop
diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-inhibitgluea.typ b/Build/source/texk/web2c/euptexdir/tests/eup-inhibitgluea.typ
new file mode 100644
index 00000000000..85cd742743e
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/eup-inhibitgluea.typ
@@ -0,0 +1,1846 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 3019.
+maxv=43725786, maxh=30785863, maxstackdepth=4, totalpages=3
+Font 2: umin10 (JFM)---loaded at size 655360 DVI units
+Font 1: cmtt10---loaded at size 655360 DVI units
+
+42: beginning of page 1
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: fntdef1 2: umin10
+127: fntnum2 current font is umin10
+128: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+131: fntdef1 1: cmtt10
+153: fntnum1 current font is cmtt10
+154: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+155: setchar110 ("6E) h:=974659+344061=1318720, hh:=84
+156: setchar117 ("75) h:=1318720+344061=1662781, hh:=106
+157: setchar108 ("6C) h:=1662781+344061=2006842, hh:=128
+158: setchar108 ("6C) h:=2006842+344061=2350903, hh:=150
+[\null]
+159: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+160: y3 798030 v:=655360+798030=1453390, vv:=92
+164: push
+level 1:(h=0,v=1453390,w=0,x=0,y=798030,z=0,hh=0,vv=92)
+165: fntnum2 current font is umin10
+166: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+169: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+172: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+175: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+178: pop
+level 1:(h=0,v=1453390,w=0,x=0,y=798030,z=0,hh=0,vv=92)
+179: y0 798030 v:=1453390+798030=2251420, vv:=143
+180: push
+level 1:(h=0,v=2251420,w=0,x=0,y=798030,z=0,hh=0,vv=143)
+181: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+184: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+187: right3 300288 h:=960908+300288=1261196, hh:=80
+191: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+194: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+197: pop
+level 1:(h=0,v=2251420,w=0,x=0,y=798030,z=0,hh=0,vv=143)
+198: y0 798030 v:=2251420+798030=3049450, vv:=193
+199: push
+level 1:(h=0,v=3049450,w=0,x=0,y=798030,z=0,hh=0,vv=193)
+200: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+203: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+206: right3 300288 h:=960908+300288=1261196, hh:=80
+210: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+213: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+216: pop
+level 1:(h=0,v=3049450,w=0,x=0,y=798030,z=0,hh=0,vv=193)
+217: y0 798030 v:=3049450+798030=3847480, vv:=244
+218: push
+level 1:(h=0,v=3847480,w=0,x=0,y=798030,z=0,hh=0,vv=244)
+219: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+222: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+225: right3 600576 h:=960908+600576=1561484, hh:=99
+229: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+232: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+235: pop
+level 1:(h=0,v=3847480,w=0,x=0,y=798030,z=0,hh=0,vv=244)
+236: y0 798030 v:=3847480+798030=4645510, vv:=294
+237: push
+level 1:(h=0,v=4645510,w=0,x=0,y=798030,z=0,hh=0,vv=294)
+238: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+241: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+244: right3 600576 h:=960908+600576=1561484, hh:=99
+248: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+251: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+254: pop
+level 1:(h=0,v=4645510,w=0,x=0,y=798030,z=0,hh=0,vv=294)
+255: y0 798030 v:=4645510+798030=5443540, vv:=345
+256: push
+level 1:(h=0,v=5443540,w=0,x=0,y=798030,z=0,hh=0,vv=345)
+257: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+260: fntnum1 current font is cmtt10
+261: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+262: setchar117 ("75) h:=974659+344061=1318720, hh:=84
+263: setchar110 ("6E) h:=1318720+344061=1662781, hh:=106
+264: setchar98 ("62) h:=1662781+344061=2006842, hh:=128
+265: setchar111 ("6F) h:=2006842+344061=2350903, hh:=150
+266: setchar120 ("78) h:=2350903+344061=2694964, hh:=172
+[\unbox]
+267: pop
+level 1:(h=0,v=5443540,w=0,x=0,y=798030,z=0,hh=0,vv=345)
+268: y0 798030 v:=5443540+798030=6241570, vv:=395
+269: push
+level 1:(h=0,v=6241570,w=0,x=0,y=798030,z=0,hh=0,vv=395)
+270: fntnum2 current font is umin10
+271: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+274: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+277: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+280: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+283: pop
+level 1:(h=0,v=6241570,w=0,x=0,y=798030,z=0,hh=0,vv=395)
+284: y0 798030 v:=6241570+798030=7039600, vv:=446
+285: push
+level 1:(h=0,v=7039600,w=0,x=0,y=798030,z=0,hh=0,vv=446)
+286: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+289: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+292: right3 300288 h:=960908+300288=1261196, hh:=80
+296: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+299: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+302: pop
+level 1:(h=0,v=7039600,w=0,x=0,y=798030,z=0,hh=0,vv=446)
+303: y0 798030 v:=7039600+798030=7837630, vv:=496
+304: push
+level 1:(h=0,v=7837630,w=0,x=0,y=798030,z=0,hh=0,vv=496)
+305: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+308: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+311: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+314: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+317: pop
+level 1:(h=0,v=7837630,w=0,x=0,y=798030,z=0,hh=0,vv=496)
+318: y0 798030 v:=7837630+798030=8635660, vv:=547
+319: push
+level 1:(h=0,v=8635660,w=0,x=0,y=798030,z=0,hh=0,vv=547)
+320: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+323: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+326: right3 300288 h:=960908+300288=1261196, hh:=80
+330: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+333: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+336: pop
+level 1:(h=0,v=8635660,w=0,x=0,y=798030,z=0,hh=0,vv=547)
+337: y0 798030 v:=8635660+798030=9433690, vv:=598
+338: push
+level 1:(h=0,v=9433690,w=0,x=0,y=798030,z=0,hh=0,vv=598)
+339: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+342: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+345: right3 600576 h:=960908+600576=1561484, hh:=99
+349: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+352: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+355: pop
+level 1:(h=0,v=9433690,w=0,x=0,y=798030,z=0,hh=0,vv=598)
+356: y0 798030 v:=9433690+798030=10231720, vv:=648
+357: push
+level 1:(h=0,v=10231720,w=0,x=0,y=798030,z=0,hh=0,vv=648)
+358: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+361: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+364: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+367: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+370: pop
+level 1:(h=0,v=10231720,w=0,x=0,y=798030,z=0,hh=0,vv=648)
+371: z3 798031 v:=10231720+798031=11029751, vv:=699
+375: push
+level 1:(h=0,v=11029751,w=0,x=0,y=798030,z=798031,hh=0,vv=699)
+376: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+379: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+382: right3 300288 h:=960908+300288=1261196, hh:=80
+386: set2 28450("6F22) type=0 h:=1261196+630598=1891794, hh:=120
+389: set2 65288("FF08) type=6 h:=1891794+330310=2222104, hh:=141
+392: set2 12354("3042) type=0 h:=2222104+630598=2852702, hh:=181
+[あ) 漢(あ]
+395: pop
+level 1:(h=0,v=11029751,w=0,x=0,y=798030,z=798031,hh=0,vv=699)
+396: y0 798030 v:=11029751+798030=11827781, vv:=749
+397: push
+level 1:(h=0,v=11827781,w=0,x=0,y=798030,z=798031,hh=0,vv=749)
+398: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+401: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+404: set2 28450("6F22) type=0 h:=960908+630598=1591506, hh:=101
+407: right3 300288 h:=1591506+300288=1891794, hh:=120
+411: set2 65288("FF08) type=6 h:=1891794+330310=2222104, hh:=141
+414: set2 12354("3042) type=0 h:=2222104+630598=2852702, hh:=181
+[あ)漢 (あ]
+417: pop
+level 1:(h=0,v=11827781,w=0,x=0,y=798030,z=798031,hh=0,vv=749)
+418: y0 798030 v:=11827781+798030=12625811, vv:=800
+419: push
+level 1:(h=0,v=12625811,w=0,x=0,y=798030,z=798031,hh=0,vv=800)
+420: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+423: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+426: w3 300288 h:=960908+300288=1261196, hh:=80
+430: set2 28450("6F22) type=0 h:=1261196+630598=1891794, hh:=120
+433: set2 28450("6F22) type=0 h:=1891794+630598=2522392, hh:=160
+436: w0 300288 h:=2522392+300288=2822680, hh:=179
+437: set2 65288("FF08) type=6 h:=2822680+330310=3152990, hh:=200
+440: set2 12354("3042) type=0 h:=3152990+630598=3783588, hh:=240
+[あ) 漢漢 (あ]
+443: pop
+level 1:(h=0,v=12625811,w=0,x=0,y=798030,z=798031,hh=0,vv=800)
+444: y0 798030 v:=12625811+798030=13423841, vv:=850
+445: push
+level 1:(h=0,v=13423841,w=0,x=0,y=798030,z=798031,hh=0,vv=850)
+446: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+449: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+452: w3 300288 h:=960908+300288=1261196, hh:=80
+456: set2 28450("6F22) type=0 h:=1261196+630598=1891794, hh:=120
+459: w0 300288 h:=1891794+300288=2192082, hh:=139
+460: set2 65288("FF08) type=6 h:=2192082+330310=2522392, hh:=160
+463: set2 12354("3042) type=0 h:=2522392+630598=3152990, hh:=200
+[あ) 漢 (あ]
+466: pop
+level 1:(h=0,v=13423841,w=0,x=0,y=798030,z=798031,hh=0,vv=850)
+467: y0 798030 v:=13423841+798030=14221871, vv:=901
+468: push
+level 1:(h=0,v=14221871,w=0,x=0,y=798030,z=798031,hh=0,vv=901)
+469: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+472: fntnum1 current font is cmtt10
+473: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+474: setchar118 ("76) h:=974659+344061=1318720, hh:=84
+475: setchar114 ("72) h:=1318720+344061=1662781, hh:=106
+476: setchar117 ("75) h:=1662781+344061=2006842, hh:=128
+477: setchar108 ("6C) h:=2006842+344061=2350903, hh:=150
+478: setchar101 ("65) h:=2350903+344061=2694964, hh:=172
+[\vrule]
+479: pop
+level 1:(h=0,v=14221871,w=0,x=0,y=798030,z=798031,hh=0,vv=901)
+480: y0 798030 v:=14221871+798030=15019901, vv:=951
+481: push
+level 1:(h=0,v=15019901,w=0,x=0,y=798030,z=798031,hh=0,vv=951)
+482: fntnum2 current font is umin10
+483: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+486: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+489: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+492: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+495: pop
+level 1:(h=0,v=15019901,w=0,x=0,y=798030,z=798031,hh=0,vv=951)
+496: y0 798030 v:=15019901+798030=15817931, vv:=1002
+497: push
+level 1:(h=0,v=15817931,w=0,x=0,y=798030,z=798031,hh=0,vv=1002)
+498: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+501: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+504: right3 300288 h:=960908+300288=1261196, hh:=80
+[あ) ]
+508: down3 91000 v:=15817931+91000=15908931, vv:=1008
+512: setrule height 600600, width 26214 (39x2 pixels)
+ h:=1261196+26214=1287410, hh:=82
+521: down3 -91000 v:=15908931-91000=15817931, vv:=1002
+525: set2 65288("FF08) type=6 h:=1287410+330310=1617720, hh:=103
+528: set2 12354("3042) type=0 h:=1617720+630598=2248318, hh:=143
+[(あ]
+531: pop
+level 1:(h=0,v=15817931,w=0,x=0,y=798030,z=798031,hh=0,vv=1002)
+532: y0 798030 v:=15817931+798030=16615961, vv:=1052
+533: push
+level 1:(h=0,v=16615961,w=0,x=0,y=798030,z=798031,hh=0,vv=1052)
+534: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+537: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+[あ)]
+540: down3 91000 v:=16615961+91000=16706961, vv:=1058
+544: setrule height 600600, width 26214 (39x2 pixels)
+ h:=960908+26214=987122, hh:=63
+553: right3 300288 h:=987122+300288=1287410, hh:=82
+[ ]
+557: down3 -91000 v:=16706961-91000=16615961, vv:=1052
+561: set2 65288("FF08) type=6 h:=1287410+330310=1617720, hh:=103
+564: set2 12354("3042) type=0 h:=1617720+630598=2248318, hh:=143
+[(あ]
+567: pop
+level 1:(h=0,v=16615961,w=0,x=0,y=798030,z=798031,hh=0,vv=1052)
+568: y0 798030 v:=16615961+798030=17413991, vv:=1103
+569: push
+level 1:(h=0,v=17413991,w=0,x=0,y=798030,z=798031,hh=0,vv=1103)
+570: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+573: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+576: w3 300288 h:=960908+300288=1261196, hh:=80
+[あ) ]
+580: down3 91000 v:=17413991+91000=17504991, vv:=1109
+584: setrule height 600600, width 26214 (39x2 pixels)
+ h:=1261196+26214=1287410, hh:=82
+593: setrule height 600600, width 26214 (39x2 pixels)
+ h:=1287410+26214=1313624, hh:=84
+602: w0 300288 h:=1313624+300288=1613912, hh:=102
+[ ]
+603: down3 -91000 v:=17504991-91000=17413991, vv:=1103
+607: set2 65288("FF08) type=6 h:=1613912+330310=1944222, hh:=123
+610: set2 12354("3042) type=0 h:=1944222+630598=2574820, hh:=163
+[(あ]
+613: pop
+level 1:(h=0,v=17413991,w=0,x=0,y=798030,z=798031,hh=0,vv=1103)
+614: y0 798030 v:=17413991+798030=18212021, vv:=1154
+615: push
+level 1:(h=0,v=18212021,w=0,x=0,y=798030,z=798031,hh=0,vv=1154)
+616: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+619: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+622: w3 300288 h:=960908+300288=1261196, hh:=80
+[あ) ]
+626: down3 91000 v:=18212021+91000=18303021, vv:=1160
+630: setrule height 600600, width 26214 (39x2 pixels)
+ h:=1261196+26214=1287410, hh:=82
+639: w0 300288 h:=1287410+300288=1587698, hh:=101
+[ ]
+640: down3 -91000 v:=18303021-91000=18212021, vv:=1154
+644: set2 65288("FF08) type=6 h:=1587698+330310=1918008, hh:=122
+647: set2 12354("3042) type=0 h:=1918008+630598=2548606, hh:=162
+[(あ]
+650: pop
+level 1:(h=0,v=18212021,w=0,x=0,y=798030,z=798031,hh=0,vv=1154)
+651: y0 798030 v:=18212021+798030=19010051, vv:=1204
+652: push
+level 1:(h=0,v=19010051,w=0,x=0,y=798030,z=798031,hh=0,vv=1204)
+653: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+656: fntnum1 current font is cmtt10
+657: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+658: setchar100 ("64) h:=974659+344061=1318720, hh:=84
+659: setchar105 ("69) h:=1318720+344061=1662781, hh:=106
+660: setchar115 ("73) h:=1662781+344061=2006842, hh:=128
+661: setchar99 ("63) h:=2006842+344061=2350903, hh:=150
+662: setchar114 ("72) h:=2350903+344061=2694964, hh:=172
+663: setchar101 ("65) h:=2694964+344061=3039025, hh:=194
+664: setchar116 ("74) h:=3039025+344061=3383086, hh:=216
+665: setchar105 ("69) h:=3383086+344061=3727147, hh:=238
+666: setchar111 ("6F) h:=3727147+344061=4071208, hh:=260
+667: setchar110 ("6E) h:=4071208+344061=4415269, hh:=282
+668: setchar97 ("61) h:=4415269+344061=4759330, hh:=303
+669: setchar114 ("72) h:=4759330+344061=5103391, hh:=325
+670: setchar121 ("79) h:=5103391+344061=5447452, hh:=347
+[\discretionary]
+671: pop
+level 1:(h=0,v=19010051,w=0,x=0,y=798030,z=798031,hh=0,vv=1204)
+672: y0 798030 v:=19010051+798030=19808081, vv:=1255
+673: push
+level 1:(h=0,v=19808081,w=0,x=0,y=798030,z=798031,hh=0,vv=1255)
+674: fntnum2 current font is umin10
+675: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+678: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+681: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+684: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+687: pop
+level 1:(h=0,v=19808081,w=0,x=0,y=798030,z=798031,hh=0,vv=1255)
+688: y0 798030 v:=19808081+798030=20606111, vv:=1305
+689: push
+level 1:(h=0,v=20606111,w=0,x=0,y=798030,z=798031,hh=0,vv=1305)
+690: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+693: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+696: right3 300288 h:=960908+300288=1261196, hh:=80
+700: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+703: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+706: pop
+level 1:(h=0,v=20606111,w=0,x=0,y=798030,z=798031,hh=0,vv=1305)
+707: y0 798030 v:=20606111+798030=21404141, vv:=1356
+708: push
+level 1:(h=0,v=21404141,w=0,x=0,y=798030,z=798031,hh=0,vv=1356)
+709: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+712: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+715: right3 300288 h:=960908+300288=1261196, hh:=80
+719: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+722: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+725: pop
+level 1:(h=0,v=21404141,w=0,x=0,y=798030,z=798031,hh=0,vv=1356)
+726: y0 798030 v:=21404141+798030=22202171, vv:=1406
+727: push
+level 1:(h=0,v=22202171,w=0,x=0,y=798030,z=798031,hh=0,vv=1406)
+728: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+731: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+734: right3 600576 h:=960908+600576=1561484, hh:=99
+738: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+741: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+744: pop
+level 1:(h=0,v=22202171,w=0,x=0,y=798030,z=798031,hh=0,vv=1406)
+745: y0 798030 v:=22202171+798030=23000201, vv:=1457
+746: push
+level 1:(h=0,v=23000201,w=0,x=0,y=798030,z=798031,hh=0,vv=1457)
+747: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+750: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+753: right3 600576 h:=960908+600576=1561484, hh:=99
+757: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+760: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+763: pop
+level 1:(h=0,v=23000201,w=0,x=0,y=798030,z=798031,hh=0,vv=1457)
+764: y0 798030 v:=23000201+798030=23798231, vv:=1507
+765: push
+level 1:(h=0,v=23798231,w=0,x=0,y=798030,z=798031,hh=0,vv=1507)
+766: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+769: fntnum1 current font is cmtt10
+770: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+771: setchar115 ("73) h:=974659+344061=1318720, hh:=84
+772: setchar112 ("70) h:=1318720+344061=1662781, hh:=106
+773: setchar101 ("65) h:=1662781+344061=2006842, hh:=128
+774: setchar99 ("63) h:=2006842+344061=2350903, hh:=150
+775: setchar105 ("69) h:=2350903+344061=2694964, hh:=172
+776: setchar97 ("61) h:=2694964+344061=3039025, hh:=194
+777: setchar108 ("6C) h:=3039025+344061=3383086, hh:=216
+[\special]
+778: pop
+level 1:(h=0,v=23798231,w=0,x=0,y=798030,z=798031,hh=0,vv=1507)
+779: y0 798030 v:=23798231+798030=24596261, vv:=1558
+780: push
+level 1:(h=0,v=24596261,w=0,x=0,y=798030,z=798031,hh=0,vv=1558)
+781: fntnum2 current font is umin10
+782: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+785: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+788: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+791: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+794: pop
+level 1:(h=0,v=24596261,w=0,x=0,y=798030,z=798031,hh=0,vv=1558)
+795: y0 798030 v:=24596261+798030=25394291, vv:=1608
+796: push
+level 1:(h=0,v=25394291,w=0,x=0,y=798030,z=798031,hh=0,vv=1608)
+797: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+800: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+803: right3 300288 h:=960908+300288=1261196, hh:=80
+[あ) ]
+807: xxx ''
+809: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+812: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[(あ]
+815: pop
+level 1:(h=0,v=25394291,w=0,x=0,y=798030,z=798031,hh=0,vv=1608)
+816: y0 798030 v:=25394291+798030=26192321, vv:=1659
+817: push
+level 1:(h=0,v=26192321,w=0,x=0,y=798030,z=798031,hh=0,vv=1659)
+818: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+821: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+[あ)]
+824: xxx ''
+826: right3 300288 h:=960908+300288=1261196, hh:=80
+830: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+833: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[ (あ]
+836: pop
+level 1:(h=0,v=26192321,w=0,x=0,y=798030,z=798031,hh=0,vv=1659)
+837: y0 798030 v:=26192321+798030=26990351, vv:=1710
+838: push
+level 1:(h=0,v=26990351,w=0,x=0,y=798030,z=798031,hh=0,vv=1710)
+839: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+842: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+845: w3 300288 h:=960908+300288=1261196, hh:=80
+[あ) ]
+849: xxx ''
+851: xxx ''
+853: w0 300288 h:=1261196+300288=1561484, hh:=99
+854: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+857: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[ (あ]
+860: pop
+level 1:(h=0,v=26990351,w=0,x=0,y=798030,z=798031,hh=0,vv=1710)
+861: y0 798030 v:=26990351+798030=27788381, vv:=1760
+862: push
+level 1:(h=0,v=27788381,w=0,x=0,y=798030,z=798031,hh=0,vv=1760)
+863: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+866: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+869: w3 300288 h:=960908+300288=1261196, hh:=80
+[あ) ]
+873: xxx ''
+875: w0 300288 h:=1261196+300288=1561484, hh:=99
+876: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+879: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[ (あ]
+882: pop
+level 1:(h=0,v=27788381,w=0,x=0,y=798030,z=798031,hh=0,vv=1760)
+883: y0 798030 v:=27788381+798030=28586411, vv:=1811
+884: push
+level 1:(h=0,v=28586411,w=0,x=0,y=798030,z=798031,hh=0,vv=1811)
+885: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+888: fntnum1 current font is cmtt10
+889: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+890: setchar119 ("77) h:=974659+344061=1318720, hh:=84
+891: setchar114 ("72) h:=1318720+344061=1662781, hh:=106
+892: setchar105 ("69) h:=1662781+344061=2006842, hh:=128
+893: setchar116 ("74) h:=2006842+344061=2350903, hh:=150
+894: setchar101 ("65) h:=2350903+344061=2694964, hh:=172
+895: setchar45 ("2D) h:=2694964+344061=3039025, hh:=194
+896: setchar49 ("31) h:=3039025+344061=3383086, hh:=216
+[\write-1]
+897: pop
+level 1:(h=0,v=28586411,w=0,x=0,y=798030,z=798031,hh=0,vv=1811)
+898: y0 798030 v:=28586411+798030=29384441, vv:=1861
+899: push
+level 1:(h=0,v=29384441,w=0,x=0,y=798030,z=798031,hh=0,vv=1861)
+900: fntnum2 current font is umin10
+901: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+904: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+907: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+910: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+913: pop
+level 1:(h=0,v=29384441,w=0,x=0,y=798030,z=798031,hh=0,vv=1861)
+914: y0 798030 v:=29384441+798030=30182471, vv:=1912
+915: push
+level 1:(h=0,v=30182471,w=0,x=0,y=798030,z=798031,hh=0,vv=1912)
+916: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+919: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+922: right3 300288 h:=960908+300288=1261196, hh:=80
+926: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+929: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+932: pop
+level 1:(h=0,v=30182471,w=0,x=0,y=798030,z=798031,hh=0,vv=1912)
+933: y0 798030 v:=30182471+798030=30980501, vv:=1962
+934: push
+level 1:(h=0,v=30980501,w=0,x=0,y=798030,z=798031,hh=0,vv=1962)
+935: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+938: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+941: right3 300288 h:=960908+300288=1261196, hh:=80
+945: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+948: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+951: pop
+level 1:(h=0,v=30980501,w=0,x=0,y=798030,z=798031,hh=0,vv=1962)
+952: z0 798031 v:=30980501+798031=31778532, vv:=2013
+953: push
+level 1:(h=0,v=31778532,w=0,x=0,y=798030,z=798031,hh=0,vv=2013)
+954: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+957: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+960: right3 600576 h:=960908+600576=1561484, hh:=99
+964: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+967: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+970: pop
+level 1:(h=0,v=31778532,w=0,x=0,y=798030,z=798031,hh=0,vv=2013)
+971: y0 798030 v:=31778532+798030=32576562, vv:=2063
+972: push
+level 1:(h=0,v=32576562,w=0,x=0,y=798030,z=798031,hh=0,vv=2063)
+973: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+976: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+979: right3 600576 h:=960908+600576=1561484, hh:=99
+983: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+986: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+989: pop
+level 1:(h=0,v=32576562,w=0,x=0,y=798030,z=798031,hh=0,vv=2063)
+990: y0 798030 v:=32576562+798030=33374592, vv:=2114
+991: push
+level 1:(h=0,v=33374592,w=0,x=0,y=798030,z=798031,hh=0,vv=2114)
+992: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+995: fntnum1 current font is cmtt10
+996: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+997: setchar105 ("69) h:=974659+344061=1318720, hh:=84
+998: setchar110 ("6E) h:=1318720+344061=1662781, hh:=106
+999: setchar115 ("73) h:=1662781+344061=2006842, hh:=128
+1000: setchar101 ("65) h:=2006842+344061=2350903, hh:=150
+1001: setchar114 ("72) h:=2350903+344061=2694964, hh:=172
+1002: setchar116 ("74) h:=2694964+344061=3039025, hh:=194
+[\insert]
+1003: pop
+level 1:(h=0,v=33374592,w=0,x=0,y=798030,z=798031,hh=0,vv=2114)
+1004: y0 798030 v:=33374592+798030=34172622, vv:=2165
+1005: push
+level 1:(h=0,v=34172622,w=0,x=0,y=798030,z=798031,hh=0,vv=2165)
+1006: fntnum2 current font is umin10
+1007: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1010: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1013: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1016: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1019: pop
+level 1:(h=0,v=34172622,w=0,x=0,y=798030,z=798031,hh=0,vv=2165)
+1020: y0 798030 v:=34172622+798030=34970652, vv:=2215
+1021: push
+level 1:(h=0,v=34970652,w=0,x=0,y=798030,z=798031,hh=0,vv=2215)
+1022: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1025: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1028: right3 300288 h:=960908+300288=1261196, hh:=80
+1032: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1035: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1038: pop
+level 1:(h=0,v=34970652,w=0,x=0,y=798030,z=798031,hh=0,vv=2215)
+1039: y0 798030 v:=34970652+798030=35768682, vv:=2266
+1040: push
+level 1:(h=0,v=35768682,w=0,x=0,y=798030,z=798031,hh=0,vv=2266)
+1041: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1044: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1047: right3 300288 h:=960908+300288=1261196, hh:=80
+1051: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1054: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1057: pop
+level 1:(h=0,v=35768682,w=0,x=0,y=798030,z=798031,hh=0,vv=2266)
+1058: y0 798030 v:=35768682+798030=36566712, vv:=2316
+1059: push
+level 1:(h=0,v=36566712,w=0,x=0,y=798030,z=798031,hh=0,vv=2316)
+1060: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1063: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1066: right3 600576 h:=960908+600576=1561484, hh:=99
+1070: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1073: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1076: pop
+level 1:(h=0,v=36566712,w=0,x=0,y=798030,z=798031,hh=0,vv=2316)
+1077: y0 798030 v:=36566712+798030=37364742, vv:=2367
+1078: push
+level 1:(h=0,v=37364742,w=0,x=0,y=798030,z=798031,hh=0,vv=2367)
+1079: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1082: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1085: right3 600576 h:=960908+600576=1561484, hh:=99
+1089: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1092: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1095: pop
+level 1:(h=0,v=37364742,w=0,x=0,y=798030,z=798031,hh=0,vv=2367)
+1096: y0 798030 v:=37364742+798030=38162772, vv:=2417
+1097: push
+level 1:(h=0,v=38162772,w=0,x=0,y=798030,z=798031,hh=0,vv=2417)
+1098: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+1101: fntnum1 current font is cmtt10
+1102: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+1103: setchar109 ("6D) h:=974659+344061=1318720, hh:=84
+1104: setchar97 ("61) h:=1318720+344061=1662781, hh:=106
+1105: setchar114 ("72) h:=1662781+344061=2006842, hh:=128
+1106: setchar107 ("6B) h:=2006842+344061=2350903, hh:=150
+[\mark]
+1107: pop
+level 1:(h=0,v=38162772,w=0,x=0,y=798030,z=798031,hh=0,vv=2417)
+1108: y0 798030 v:=38162772+798030=38960802, vv:=2468
+1109: push
+level 1:(h=0,v=38960802,w=0,x=0,y=798030,z=798031,hh=0,vv=2468)
+1110: fntnum2 current font is umin10
+1111: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1114: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1117: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1120: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1123: pop
+level 1:(h=0,v=38960802,w=0,x=0,y=798030,z=798031,hh=0,vv=2468)
+1124: y0 798030 v:=38960802+798030=39758832, vv:=2518
+1125: push
+level 1:(h=0,v=39758832,w=0,x=0,y=798030,z=798031,hh=0,vv=2518)
+1126: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1129: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1132: right3 300288 h:=960908+300288=1261196, hh:=80
+1136: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1139: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1142: pop
+level 1:(h=0,v=39758832,w=0,x=0,y=798030,z=798031,hh=0,vv=2518)
+1143: y0 798030 v:=39758832+798030=40556862, vv:=2569
+1144: push
+level 1:(h=0,v=40556862,w=0,x=0,y=798030,z=798031,hh=0,vv=2569)
+1145: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1148: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1151: right3 300288 h:=960908+300288=1261196, hh:=80
+1155: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1158: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1161: pop
+level 1:(h=0,v=40556862,w=0,x=0,y=798030,z=798031,hh=0,vv=2569)
+1162: y0 798030 v:=40556862+798030=41354892, vv:=2619
+1163: push
+level 1:(h=0,v=41354892,w=0,x=0,y=798030,z=798031,hh=0,vv=2619)
+1164: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1167: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1170: right3 600576 h:=960908+600576=1561484, hh:=99
+1174: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1177: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1180: pop
+level 1:(h=0,v=41354892,w=0,x=0,y=798030,z=798031,hh=0,vv=2619)
+1181: y0 798030 v:=41354892+798030=42152922, vv:=2670
+1182: push
+level 1:(h=0,v=42152922,w=0,x=0,y=798030,z=798031,hh=0,vv=2670)
+1183: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1186: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1189: right3 600576 h:=960908+600576=1561484, hh:=99
+1193: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1196: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1199: pop
+level 1:(h=0,v=42152922,w=0,x=0,y=798030,z=798031,hh=0,vv=2670)
+1200: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+1201: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+1205: eop
+
+1206: beginning of page 2
+1251: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+1252: down3 -917504 v:=0-917504=-917504, vv:=-58
+1256: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+1257: down4 42152922 v:=0+42152922=42152922, vv:=2670
+1262: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+1263: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+1268: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+1269: fntnum2 current font is umin10
+1270: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+1273: fntnum1 current font is cmtt10
+1274: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+1275: setchar118 ("76) h:=974659+344061=1318720, hh:=84
+1276: setchar97 ("61) h:=1318720+344061=1662781, hh:=106
+1277: setchar100 ("64) h:=1662781+344061=2006842, hh:=128
+1278: setchar106 ("6A) h:=2006842+344061=2350903, hh:=150
+1279: setchar117 ("75) h:=2350903+344061=2694964, hh:=172
+1280: setchar115 ("73) h:=2694964+344061=3039025, hh:=194
+1281: setchar116 ("74) h:=3039025+344061=3383086, hh:=216
+[\vadjust]
+1282: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+1283: y3 798030 v:=655360+798030=1453390, vv:=92
+1287: push
+level 1:(h=0,v=1453390,w=0,x=0,y=798030,z=0,hh=0,vv=92)
+1288: fntnum2 current font is umin10
+1289: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1292: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1295: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1298: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1301: pop
+level 1:(h=0,v=1453390,w=0,x=0,y=798030,z=0,hh=0,vv=92)
+1302: y0 798030 v:=1453390+798030=2251420, vv:=143
+1303: push
+level 1:(h=0,v=2251420,w=0,x=0,y=798030,z=0,hh=0,vv=143)
+1304: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1307: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1310: right3 300288 h:=960908+300288=1261196, hh:=80
+1314: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1317: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1320: pop
+level 1:(h=0,v=2251420,w=0,x=0,y=798030,z=0,hh=0,vv=143)
+1321: y0 798030 v:=2251420+798030=3049450, vv:=193
+1322: push
+level 1:(h=0,v=3049450,w=0,x=0,y=798030,z=0,hh=0,vv=193)
+1323: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1326: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1329: right3 300288 h:=960908+300288=1261196, hh:=80
+1333: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1336: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1339: pop
+level 1:(h=0,v=3049450,w=0,x=0,y=798030,z=0,hh=0,vv=193)
+1340: y0 798030 v:=3049450+798030=3847480, vv:=244
+1341: push
+level 1:(h=0,v=3847480,w=0,x=0,y=798030,z=0,hh=0,vv=244)
+1342: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1345: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1348: right3 600576 h:=960908+600576=1561484, hh:=99
+1352: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1355: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1358: pop
+level 1:(h=0,v=3847480,w=0,x=0,y=798030,z=0,hh=0,vv=244)
+1359: y0 798030 v:=3847480+798030=4645510, vv:=294
+1360: push
+level 1:(h=0,v=4645510,w=0,x=0,y=798030,z=0,hh=0,vv=294)
+1361: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1364: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1367: right3 600576 h:=960908+600576=1561484, hh:=99
+1371: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1374: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1377: pop
+level 1:(h=0,v=4645510,w=0,x=0,y=798030,z=0,hh=0,vv=294)
+1378: y0 798030 v:=4645510+798030=5443540, vv:=345
+1379: push
+level 1:(h=0,v=5443540,w=0,x=0,y=798030,z=0,hh=0,vv=345)
+1380: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+1383: fntnum1 current font is cmtt10
+1384: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+1385: setchar104 ("68) h:=974659+344061=1318720, hh:=84
+1386: setchar115 ("73) h:=1318720+344061=1662781, hh:=106
+1387: setchar107 ("6B) h:=1662781+344061=2006842, hh:=128
+1388: setchar105 ("69) h:=2006842+344061=2350903, hh:=150
+1389: setchar112 ("70) h:=2350903+344061=2694964, hh:=172
+1390: setchar48 ("30) h:=2694964+344061=3039025, hh:=194
+1391: setchar112 ("70) h:=3039025+344061=3383086, hh:=216
+1392: setchar116 ("74) h:=3383086+344061=3727147, hh:=238
+[\hskip0pt]
+1393: pop
+level 1:(h=0,v=5443540,w=0,x=0,y=798030,z=0,hh=0,vv=345)
+1394: y0 798030 v:=5443540+798030=6241570, vv:=395
+1395: push
+level 1:(h=0,v=6241570,w=0,x=0,y=798030,z=0,hh=0,vv=395)
+1396: fntnum2 current font is umin10
+1397: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1400: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1403: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1406: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1409: pop
+level 1:(h=0,v=6241570,w=0,x=0,y=798030,z=0,hh=0,vv=395)
+1410: y0 798030 v:=6241570+798030=7039600, vv:=446
+1411: push
+level 1:(h=0,v=7039600,w=0,x=0,y=798030,z=0,hh=0,vv=446)
+1412: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1415: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1418: right3 300288 h:=960908+300288=1261196, hh:=80
+1422: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1425: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1428: pop
+level 1:(h=0,v=7039600,w=0,x=0,y=798030,z=0,hh=0,vv=446)
+1429: y0 798030 v:=7039600+798030=7837630, vv:=496
+1430: push
+level 1:(h=0,v=7837630,w=0,x=0,y=798030,z=0,hh=0,vv=496)
+1431: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1434: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1437: right3 300288 h:=960908+300288=1261196, hh:=80
+1441: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1444: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1447: pop
+level 1:(h=0,v=7837630,w=0,x=0,y=798030,z=0,hh=0,vv=496)
+1448: y0 798030 v:=7837630+798030=8635660, vv:=547
+1449: push
+level 1:(h=0,v=8635660,w=0,x=0,y=798030,z=0,hh=0,vv=547)
+1450: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1453: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1456: right3 600576 h:=960908+600576=1561484, hh:=99
+1460: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1463: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1466: pop
+level 1:(h=0,v=8635660,w=0,x=0,y=798030,z=0,hh=0,vv=547)
+1467: y0 798030 v:=8635660+798030=9433690, vv:=598
+1468: push
+level 1:(h=0,v=9433690,w=0,x=0,y=798030,z=0,hh=0,vv=598)
+1469: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1472: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1475: right3 600576 h:=960908+600576=1561484, hh:=99
+1479: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1482: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1485: pop
+level 1:(h=0,v=9433690,w=0,x=0,y=798030,z=0,hh=0,vv=598)
+1486: y0 798030 v:=9433690+798030=10231720, vv:=648
+1487: push
+level 1:(h=0,v=10231720,w=0,x=0,y=798030,z=0,hh=0,vv=648)
+1488: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+1491: fntnum1 current font is cmtt10
+1492: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+1493: setchar107 ("6B) h:=974659+344061=1318720, hh:=84
+1494: setchar101 ("65) h:=1318720+344061=1662781, hh:=106
+1495: setchar114 ("72) h:=1662781+344061=2006842, hh:=128
+1496: setchar110 ("6E) h:=2006842+344061=2350903, hh:=150
+1497: setchar48 ("30) h:=2350903+344061=2694964, hh:=172
+1498: setchar112 ("70) h:=2694964+344061=3039025, hh:=194
+1499: setchar116 ("74) h:=3039025+344061=3383086, hh:=216
+[\kern0pt]
+1500: pop
+level 1:(h=0,v=10231720,w=0,x=0,y=798030,z=0,hh=0,vv=648)
+1501: z3 798031 v:=10231720+798031=11029751, vv:=699
+1505: push
+level 1:(h=0,v=11029751,w=0,x=0,y=798030,z=798031,hh=0,vv=699)
+1506: fntnum2 current font is umin10
+1507: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1510: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1513: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1516: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1519: pop
+level 1:(h=0,v=11029751,w=0,x=0,y=798030,z=798031,hh=0,vv=699)
+1520: y0 798030 v:=11029751+798030=11827781, vv:=749
+1521: push
+level 1:(h=0,v=11827781,w=0,x=0,y=798030,z=798031,hh=0,vv=749)
+1522: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1525: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1528: right3 300288 h:=960908+300288=1261196, hh:=80
+1532: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1535: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1538: pop
+level 1:(h=0,v=11827781,w=0,x=0,y=798030,z=798031,hh=0,vv=749)
+1539: y0 798030 v:=11827781+798030=12625811, vv:=800
+1540: push
+level 1:(h=0,v=12625811,w=0,x=0,y=798030,z=798031,hh=0,vv=800)
+1541: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1544: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1547: right3 300288 h:=960908+300288=1261196, hh:=80
+1551: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1554: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1557: pop
+level 1:(h=0,v=12625811,w=0,x=0,y=798030,z=798031,hh=0,vv=800)
+1558: y0 798030 v:=12625811+798030=13423841, vv:=850
+1559: push
+level 1:(h=0,v=13423841,w=0,x=0,y=798030,z=798031,hh=0,vv=850)
+1560: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1563: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1566: right3 600576 h:=960908+600576=1561484, hh:=99
+1570: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1573: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1576: pop
+level 1:(h=0,v=13423841,w=0,x=0,y=798030,z=798031,hh=0,vv=850)
+1577: y0 798030 v:=13423841+798030=14221871, vv:=901
+1578: push
+level 1:(h=0,v=14221871,w=0,x=0,y=798030,z=798031,hh=0,vv=901)
+1579: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1582: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1585: right3 600576 h:=960908+600576=1561484, hh:=99
+1589: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1592: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1595: pop
+level 1:(h=0,v=14221871,w=0,x=0,y=798030,z=798031,hh=0,vv=901)
+1596: y0 798030 v:=14221871+798030=15019901, vv:=951
+1597: push
+level 1:(h=0,v=15019901,w=0,x=0,y=798030,z=798031,hh=0,vv=951)
+1598: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+1601: fntnum1 current font is cmtt10
+1602: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+1603: setchar112 ("70) h:=974659+344061=1318720, hh:=84
+1604: setchar101 ("65) h:=1318720+344061=1662781, hh:=106
+1605: setchar110 ("6E) h:=1662781+344061=2006842, hh:=128
+1606: setchar97 ("61) h:=2006842+344061=2350903, hh:=150
+1607: setchar108 ("6C) h:=2350903+344061=2694964, hh:=172
+1608: setchar116 ("74) h:=2694964+344061=3039025, hh:=194
+1609: setchar121 ("79) h:=3039025+344061=3383086, hh:=216
+1610: setchar49 ("31) h:=3383086+344061=3727147, hh:=238
+1611: setchar48 ("30) h:=3727147+344061=4071208, hh:=260
+1612: setchar48 ("30) h:=4071208+344061=4415269, hh:=282
+1613: setchar48 ("30) h:=4415269+344061=4759330, hh:=303
+1614: setchar48 ("30) h:=4759330+344061=5103391, hh:=325
+[\penalty10000]
+1615: pop
+level 1:(h=0,v=15019901,w=0,x=0,y=798030,z=798031,hh=0,vv=951)
+1616: y0 798030 v:=15019901+798030=15817931, vv:=1002
+1617: push
+level 1:(h=0,v=15817931,w=0,x=0,y=798030,z=798031,hh=0,vv=1002)
+1618: fntnum2 current font is umin10
+1619: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1622: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1625: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1628: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1631: pop
+level 1:(h=0,v=15817931,w=0,x=0,y=798030,z=798031,hh=0,vv=1002)
+1632: y0 798030 v:=15817931+798030=16615961, vv:=1052
+1633: push
+level 1:(h=0,v=16615961,w=0,x=0,y=798030,z=798031,hh=0,vv=1052)
+1634: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1637: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1640: right3 300288 h:=960908+300288=1261196, hh:=80
+1644: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1647: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1650: pop
+level 1:(h=0,v=16615961,w=0,x=0,y=798030,z=798031,hh=0,vv=1052)
+1651: y0 798030 v:=16615961+798030=17413991, vv:=1103
+1652: push
+level 1:(h=0,v=17413991,w=0,x=0,y=798030,z=798031,hh=0,vv=1103)
+1653: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1656: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1659: right3 300288 h:=960908+300288=1261196, hh:=80
+1663: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1666: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1669: pop
+level 1:(h=0,v=17413991,w=0,x=0,y=798030,z=798031,hh=0,vv=1103)
+1670: y0 798030 v:=17413991+798030=18212021, vv:=1154
+1671: push
+level 1:(h=0,v=18212021,w=0,x=0,y=798030,z=798031,hh=0,vv=1154)
+1672: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1675: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1678: right3 600576 h:=960908+600576=1561484, hh:=99
+1682: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1685: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1688: pop
+level 1:(h=0,v=18212021,w=0,x=0,y=798030,z=798031,hh=0,vv=1154)
+1689: y0 798030 v:=18212021+798030=19010051, vv:=1204
+1690: push
+level 1:(h=0,v=19010051,w=0,x=0,y=798030,z=798031,hh=0,vv=1204)
+1691: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1694: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1697: right3 600576 h:=960908+600576=1561484, hh:=99
+1701: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1704: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1707: pop
+level 1:(h=0,v=19010051,w=0,x=0,y=798030,z=798031,hh=0,vv=1204)
+1708: y0 798030 v:=19010051+798030=19808081, vv:=1255
+1709: push
+level 1:(h=0,v=19808081,w=0,x=0,y=798030,z=798031,hh=0,vv=1255)
+1710: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+1713: fntnum1 current font is cmtt10
+1714: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+1715: setchar114 ("72) h:=974659+344061=1318720, hh:=84
+1716: setchar101 ("65) h:=1318720+344061=1662781, hh:=106
+1717: setchar108 ("6C) h:=1662781+344061=2006842, hh:=128
+1718: setchar97 ("61) h:=2006842+344061=2350903, hh:=150
+1719: setchar120 ("78) h:=2350903+344061=2694964, hh:=172
+[\relax]
+1720: pop
+level 1:(h=0,v=19808081,w=0,x=0,y=798030,z=798031,hh=0,vv=1255)
+1721: y0 798030 v:=19808081+798030=20606111, vv:=1305
+1722: push
+level 1:(h=0,v=20606111,w=0,x=0,y=798030,z=798031,hh=0,vv=1305)
+1723: fntnum2 current font is umin10
+1724: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1727: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1730: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1733: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1736: pop
+level 1:(h=0,v=20606111,w=0,x=0,y=798030,z=798031,hh=0,vv=1305)
+1737: y0 798030 v:=20606111+798030=21404141, vv:=1356
+1738: push
+level 1:(h=0,v=21404141,w=0,x=0,y=798030,z=798031,hh=0,vv=1356)
+1739: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1742: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1745: right3 300288 h:=960908+300288=1261196, hh:=80
+1749: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1752: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1755: pop
+level 1:(h=0,v=21404141,w=0,x=0,y=798030,z=798031,hh=0,vv=1356)
+1756: y0 798030 v:=21404141+798030=22202171, vv:=1406
+1757: push
+level 1:(h=0,v=22202171,w=0,x=0,y=798030,z=798031,hh=0,vv=1406)
+1758: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1761: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1764: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1767: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1770: pop
+level 1:(h=0,v=22202171,w=0,x=0,y=798030,z=798031,hh=0,vv=1406)
+1771: y0 798030 v:=22202171+798030=23000201, vv:=1457
+1772: push
+level 1:(h=0,v=23000201,w=0,x=0,y=798030,z=798031,hh=0,vv=1457)
+1773: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1776: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1779: right3 300288 h:=960908+300288=1261196, hh:=80
+1783: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1786: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1789: pop
+level 1:(h=0,v=23000201,w=0,x=0,y=798030,z=798031,hh=0,vv=1457)
+1790: y0 798030 v:=23000201+798030=23798231, vv:=1507
+1791: push
+level 1:(h=0,v=23798231,w=0,x=0,y=798030,z=798031,hh=0,vv=1507)
+1792: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1795: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1798: right3 600576 h:=960908+600576=1561484, hh:=99
+1802: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1805: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1808: pop
+level 1:(h=0,v=23798231,w=0,x=0,y=798030,z=798031,hh=0,vv=1507)
+1809: y0 798030 v:=23798231+798030=24596261, vv:=1558
+1810: push
+level 1:(h=0,v=24596261,w=0,x=0,y=798030,z=798031,hh=0,vv=1558)
+1811: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1814: set2 12354("3042) type=0 h:=630598+630598=1261196, hh:=80
+1817: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1820: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[ああ(あ]
+1823: pop
+level 1:(h=0,v=24596261,w=0,x=0,y=798030,z=798031,hh=0,vv=1558)
+1824: y0 798030 v:=24596261+798030=25394291, vv:=1608
+1825: push
+level 1:(h=0,v=25394291,w=0,x=0,y=798030,z=798031,hh=0,vv=1608)
+1826: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1829: set2 12354("3042) type=0 h:=630598+630598=1261196, hh:=80
+1832: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1835: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[ああ(あ]
+1838: pop
+level 1:(h=0,v=25394291,w=0,x=0,y=798030,z=798031,hh=0,vv=1608)
+1839: y0 798030 v:=25394291+798030=26192321, vv:=1659
+1840: push
+level 1:(h=0,v=26192321,w=0,x=0,y=798030,z=798031,hh=0,vv=1659)
+1841: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1844: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1847: right3 300288 h:=960908+300288=1261196, hh:=80
+1851: set2 12354("3042) type=0 h:=1261196+630598=1891794, hh:=120
+1854: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) ああ]
+1857: pop
+level 1:(h=0,v=26192321,w=0,x=0,y=798030,z=798031,hh=0,vv=1659)
+1858: y0 798030 v:=26192321+798030=26990351, vv:=1710
+1859: push
+level 1:(h=0,v=26990351,w=0,x=0,y=798030,z=798031,hh=0,vv=1710)
+1860: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1863: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1866: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101
+1869: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ)ああ]
+1872: pop
+level 1:(h=0,v=26990351,w=0,x=0,y=798030,z=798031,hh=0,vv=1710)
+1873: y0 798030 v:=26990351+798030=27788381, vv:=1760
+1874: push
+level 1:(h=0,v=27788381,w=0,x=0,y=798030,z=798031,hh=0,vv=1760)
+1875: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+1878: fntnum1 current font is cmtt10
+1879: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+1880: setchar105 ("69) h:=974659+344061=1318720, hh:=84
+1881: setchar103 ("67) h:=1318720+344061=1662781, hh:=106
+1882: setchar110 ("6E) h:=1662781+344061=2006842, hh:=128
+1883: setchar111 ("6F) h:=2006842+344061=2350903, hh:=150
+1884: setchar114 ("72) h:=2350903+344061=2694964, hh:=172
+1885: setchar101 ("65) h:=2694964+344061=3039025, hh:=194
+1886: setchar115 ("73) h:=3039025+344061=3383086, hh:=216
+1887: setchar112 ("70) h:=3383086+344061=3727147, hh:=238
+1888: setchar97 ("61) h:=3727147+344061=4071208, hh:=260
+1889: setchar99 ("63) h:=4071208+344061=4415269, hh:=282
+1890: setchar101 ("65) h:=4415269+344061=4759330, hh:=303
+1891: setchar115 ("73) h:=4759330+344061=5103391, hh:=325
+[\ignorespaces]
+1892: pop
+level 1:(h=0,v=27788381,w=0,x=0,y=798030,z=798031,hh=0,vv=1760)
+1893: y0 798030 v:=27788381+798030=28586411, vv:=1811
+1894: push
+level 1:(h=0,v=28586411,w=0,x=0,y=798030,z=798031,hh=0,vv=1811)
+1895: fntnum2 current font is umin10
+1896: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1899: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1902: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1905: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1908: pop
+level 1:(h=0,v=28586411,w=0,x=0,y=798030,z=798031,hh=0,vv=1811)
+1909: y0 798030 v:=28586411+798030=29384441, vv:=1861
+1910: push
+level 1:(h=0,v=29384441,w=0,x=0,y=798030,z=798031,hh=0,vv=1861)
+1911: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1914: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1917: right3 300288 h:=960908+300288=1261196, hh:=80
+1921: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1924: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1927: pop
+level 1:(h=0,v=29384441,w=0,x=0,y=798030,z=798031,hh=0,vv=1861)
+1928: y0 798030 v:=29384441+798030=30182471, vv:=1912
+1929: push
+level 1:(h=0,v=30182471,w=0,x=0,y=798030,z=798031,hh=0,vv=1912)
+1930: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1933: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1936: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+1939: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+1942: pop
+level 1:(h=0,v=30182471,w=0,x=0,y=798030,z=798031,hh=0,vv=1912)
+1943: y0 798030 v:=30182471+798030=30980501, vv:=1962
+1944: push
+level 1:(h=0,v=30980501,w=0,x=0,y=798030,z=798031,hh=0,vv=1962)
+1945: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1948: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1951: right3 300288 h:=960908+300288=1261196, hh:=80
+1955: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+1958: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+1961: pop
+level 1:(h=0,v=30980501,w=0,x=0,y=798030,z=798031,hh=0,vv=1962)
+1962: z0 798031 v:=30980501+798031=31778532, vv:=2013
+1963: push
+level 1:(h=0,v=31778532,w=0,x=0,y=798030,z=798031,hh=0,vv=2013)
+1964: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+1967: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+1970: right3 600576 h:=960908+600576=1561484, hh:=99
+1974: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+1977: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+1980: pop
+level 1:(h=0,v=31778532,w=0,x=0,y=798030,z=798031,hh=0,vv=2013)
+1981: y0 798030 v:=31778532+798030=32576562, vv:=2063
+1982: push
+level 1:(h=0,v=32576562,w=0,x=0,y=798030,z=798031,hh=0,vv=2063)
+1983: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+1986: fntnum1 current font is cmtt10
+1987: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+1988: setchar115 ("73) h:=974659+344061=1318720, hh:=84
+1989: setchar112 ("70) h:=1318720+344061=1662781, hh:=106
+1990: setchar97 ("61) h:=1662781+344061=2006842, hh:=128
+1991: setchar99 ("63) h:=2006842+344061=2350903, hh:=150
+1992: setchar101 ("65) h:=2350903+344061=2694964, hh:=172
+1993: setchar102 ("66) h:=2694964+344061=3039025, hh:=194
+1994: setchar97 ("61) h:=3039025+344061=3383086, hh:=216
+1995: setchar99 ("63) h:=3383086+344061=3727147, hh:=238
+1996: setchar116 ("74) h:=3727147+344061=4071208, hh:=260
+1997: setchar111 ("6F) h:=4071208+344061=4415269, hh:=282
+1998: setchar114 ("72) h:=4415269+344061=4759330, hh:=303
+1999: setchar49 ("31) h:=4759330+344061=5103391, hh:=325
+2000: setchar48 ("30) h:=5103391+344061=5447452, hh:=347
+2001: setchar48 ("30) h:=5447452+344061=5791513, hh:=369
+2002: setchar48 ("30) h:=5791513+344061=6135574, hh:=391
+[\spacefactor1000]
+2003: pop
+level 1:(h=0,v=32576562,w=0,x=0,y=798030,z=798031,hh=0,vv=2063)
+2004: y0 798030 v:=32576562+798030=33374592, vv:=2114
+2005: push
+level 1:(h=0,v=33374592,w=0,x=0,y=798030,z=798031,hh=0,vv=2114)
+2006: fntnum2 current font is umin10
+2007: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2010: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2013: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+2016: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+2019: pop
+level 1:(h=0,v=33374592,w=0,x=0,y=798030,z=798031,hh=0,vv=2114)
+2020: y0 798030 v:=33374592+798030=34172622, vv:=2165
+2021: push
+level 1:(h=0,v=34172622,w=0,x=0,y=798030,z=798031,hh=0,vv=2165)
+2022: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2025: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2028: right3 300288 h:=960908+300288=1261196, hh:=80
+2032: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2035: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+2038: pop
+level 1:(h=0,v=34172622,w=0,x=0,y=798030,z=798031,hh=0,vv=2165)
+2039: y0 798030 v:=34172622+798030=34970652, vv:=2215
+2040: push
+level 1:(h=0,v=34970652,w=0,x=0,y=798030,z=798031,hh=0,vv=2215)
+2041: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2044: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2047: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+2050: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+2053: pop
+level 1:(h=0,v=34970652,w=0,x=0,y=798030,z=798031,hh=0,vv=2215)
+2054: y0 798030 v:=34970652+798030=35768682, vv:=2266
+2055: push
+level 1:(h=0,v=35768682,w=0,x=0,y=798030,z=798031,hh=0,vv=2266)
+2056: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2059: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2062: right3 300288 h:=960908+300288=1261196, hh:=80
+2066: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2069: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+2072: pop
+level 1:(h=0,v=35768682,w=0,x=0,y=798030,z=798031,hh=0,vv=2266)
+2073: y0 798030 v:=35768682+798030=36566712, vv:=2316
+2074: push
+level 1:(h=0,v=36566712,w=0,x=0,y=798030,z=798031,hh=0,vv=2316)
+2075: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2078: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2081: right3 600576 h:=960908+600576=1561484, hh:=99
+2085: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+2088: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+2091: pop
+level 1:(h=0,v=36566712,w=0,x=0,y=798030,z=798031,hh=0,vv=2316)
+2092: y0 798030 v:=36566712+798030=37364742, vv:=2367
+2093: push
+level 1:(h=0,v=37364742,w=0,x=0,y=798030,z=798031,hh=0,vv=2367)
+2094: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+2097: fntnum1 current font is cmtt10
+2098: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+2099: setchar108 ("6C) h:=974659+344061=1318720, hh:=84
+2100: setchar101 ("65) h:=1318720+344061=1662781, hh:=106
+2101: setchar116 ("74) h:=1662781+344061=2006842, hh:=128
+[\let]
+2102: pop
+level 1:(h=0,v=37364742,w=0,x=0,y=798030,z=798031,hh=0,vv=2367)
+2103: y0 798030 v:=37364742+798030=38162772, vv:=2417
+2104: push
+level 1:(h=0,v=38162772,w=0,x=0,y=798030,z=798031,hh=0,vv=2417)
+2105: fntnum2 current font is umin10
+2106: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2109: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2112: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+2115: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+2118: pop
+level 1:(h=0,v=38162772,w=0,x=0,y=798030,z=798031,hh=0,vv=2417)
+2119: y0 798030 v:=38162772+798030=38960802, vv:=2468
+2120: push
+level 1:(h=0,v=38960802,w=0,x=0,y=798030,z=798031,hh=0,vv=2468)
+2121: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2124: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2127: right3 300288 h:=960908+300288=1261196, hh:=80
+2131: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2134: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+2137: pop
+level 1:(h=0,v=38960802,w=0,x=0,y=798030,z=798031,hh=0,vv=2468)
+2138: y0 798030 v:=38960802+798030=39758832, vv:=2518
+2139: push
+level 1:(h=0,v=39758832,w=0,x=0,y=798030,z=798031,hh=0,vv=2518)
+2140: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2143: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2146: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+2149: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+2152: pop
+level 1:(h=0,v=39758832,w=0,x=0,y=798030,z=798031,hh=0,vv=2518)
+2153: y0 798030 v:=39758832+798030=40556862, vv:=2569
+2154: push
+level 1:(h=0,v=40556862,w=0,x=0,y=798030,z=798031,hh=0,vv=2569)
+2155: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2158: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2161: right3 300288 h:=960908+300288=1261196, hh:=80
+2165: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2168: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+2171: pop
+level 1:(h=0,v=40556862,w=0,x=0,y=798030,z=798031,hh=0,vv=2569)
+2172: y0 798030 v:=40556862+798030=41354892, vv:=2619
+2173: push
+level 1:(h=0,v=41354892,w=0,x=0,y=798030,z=798031,hh=0,vv=2619)
+2174: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2177: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2180: right3 600576 h:=960908+600576=1561484, hh:=99
+2184: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+2187: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+2190: pop
+level 1:(h=0,v=41354892,w=0,x=0,y=798030,z=798031,hh=0,vv=2619)
+2191: y0 798030 v:=41354892+798030=42152922, vv:=2670
+2192: push
+level 1:(h=0,v=42152922,w=0,x=0,y=798030,z=798031,hh=0,vv=2670)
+2193: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+2196: fntnum1 current font is cmtt10
+2197: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+2198: setchar103 ("67) h:=974659+344061=1318720, hh:=84
+2199: setchar114 ("72) h:=1318720+344061=1662781, hh:=106
+2200: setchar111 ("6F) h:=1662781+344061=2006842, hh:=128
+2201: setchar117 ("75) h:=2006842+344061=2350903, hh:=150
+2202: setchar112 ("70) h:=2350903+344061=2694964, hh:=172
+[\group]
+2203: pop
+level 1:(h=0,v=42152922,w=0,x=0,y=798030,z=798031,hh=0,vv=2670)
+2204: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+2205: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+2209: eop
+
+2210: beginning of page 3
+2255: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+2256: down3 -917504 v:=0-917504=-917504, vv:=-58
+2260: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+2261: down4 42152922 v:=0+42152922=42152922, vv:=2670
+2266: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+2267: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+2272: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+2273: fntnum2 current font is umin10
+2274: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2277: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2280: right3 300288 h:=960908+300288=1261196, hh:=80
+2284: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2287: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+2290: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+2291: y3 786432 v:=655360+786432=1441792, vv:=91
+2295: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+2296: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2299: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2302: right3 600576 h:=960908+600576=1561484, hh:=99
+2306: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+2309: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) (あ]
+2312: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+2313: y0 786432 v:=1441792+786432=2228224, vv:=141
+2314: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+2315: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2318: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2321: right3 300288 h:=960908+300288=1261196, hh:=80
+2325: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2328: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+2331: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+2332: y0 786432 v:=2228224+786432=3014656, vv:=191
+2333: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+2334: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2337: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2340: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+2343: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+2346: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+2347: y0 786432 v:=3014656+786432=3801088, vv:=241
+2348: push
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+2349: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2352: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2355: right3 300288 h:=960908+300288=1261196, hh:=80
+2359: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2362: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+2365: pop
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+2366: y0 786432 v:=3801088+786432=4587520, vv:=291
+2367: push
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+2368: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2371: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2374: right3 300288 h:=960908+300288=1261196, hh:=80
+2378: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2381: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ) (あ]
+2384: pop
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+2385: y0 786432 v:=4587520+786432=5373952, vv:=340
+2386: push
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+2387: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2390: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2393: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82
+2396: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122
+[あ)(あ]
+2399: pop
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+2400: y0 786432 v:=5373952+786432=6160384, vv:=390
+2401: push
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+2402: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2405: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2408: right3 150143 h:=960908+150143=1111051, hh:=70
+2412: set2 12539("30FB) type=4 h:=1111051+231778=1342829, hh:=85
+2415: right3 199410 h:=1342829+199410=1542239, hh:=98
+2419: set2 12354("3042) type=0 h:=1542239+630598=2172837, hh:=138
+[あ) ・ あ]
+2422: pop
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+2423: y0 786432 v:=6160384+786432=6946816, vv:=440
+2424: push
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+2425: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2428: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2431: right3 499698 h:=960908+499698=1460606, hh:=93
+2435: set2 12539("30FB) type=4 h:=1460606+231778=1692384, hh:=108
+2438: right3 199410 h:=1692384+199410=1891794, hh:=120
+2442: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ) ・ あ]
+2445: pop
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+2446: y0 786432 v:=6946816+786432=7733248, vv:=490
+2447: push
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+2448: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2451: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2454: right3 300288 h:=960908+300288=1261196, hh:=80
+2458: set2 12539("30FB) type=4 h:=1261196+231778=1492974, hh:=95
+2461: right3 199410 h:=1492974+199410=1692384, hh:=107
+2465: set2 12354("3042) type=0 h:=1692384+630598=2322982, hh:=147
+[あ) ・ あ]
+2468: pop
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+2469: y0 786432 v:=7733248+786432=8519680, vv:=540
+2470: push
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+2471: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2474: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2477: set2 12539("30FB) type=4 h:=960908+231778=1192686, hh:=76
+2480: right3 199410 h:=1192686+199410=1392096, hh:=88
+2484: set2 12354("3042) type=0 h:=1392096+630598=2022694, hh:=128
+[あ)・ あ]
+2487: pop
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+2488: y0 786432 v:=8519680+786432=9306112, vv:=589
+2489: push
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+2490: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2493: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2496: right3 300288 h:=960908+300288=1261196, hh:=80
+2500: set2 12539("30FB) type=4 h:=1261196+231778=1492974, hh:=95
+2503: right3 199410 h:=1492974+199410=1692384, hh:=107
+2507: set2 12354("3042) type=0 h:=1692384+630598=2322982, hh:=147
+[あ) ・ あ]
+2510: pop
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+2511: y0 786432 v:=9306112+786432=10092544, vv:=639
+2512: push
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+2513: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2516: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2519: right3 300288 h:=960908+300288=1261196, hh:=80
+2523: set2 12539("30FB) type=4 h:=1261196+231778=1492974, hh:=95
+2526: right3 199410 h:=1492974+199410=1692384, hh:=107
+2530: set2 12354("3042) type=0 h:=1692384+630598=2322982, hh:=147
+[あ) ・ あ]
+2533: pop
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+2534: y0 786432 v:=10092544+786432=10878976, vv:=689
+2535: push
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+2536: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2539: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2542: set2 12539("30FB) type=4 h:=960908+231778=1192686, hh:=76
+2545: right3 199410 h:=1192686+199410=1392096, hh:=88
+2549: set2 12354("3042) type=0 h:=1392096+630598=2022694, hh:=128
+[あ)・ あ]
+2552: pop
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+2553: y0 786432 v:=10878976+786432=11665408, vv:=739
+2554: push
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+2555: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2558: right3 199410 h:=630598+199410=830008, hh:=53
+2562: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68
+2565: right3 150143 h:=1061786+150143=1211929, hh:=77
+2569: set2 65288("FF08) type=6 h:=1211929+330310=1542239, hh:=98
+2572: set2 12354("3042) type=0 h:=1542239+630598=2172837, hh:=138
+[あ ・ (あ]
+2575: pop
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+2576: y0 786432 v:=11665408+786432=12451840, vv:=789
+2577: push
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+2578: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2581: right3 199410 h:=630598+199410=830008, hh:=53
+2585: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68
+2588: right3 499698 h:=1061786+499698=1561484, hh:=99
+2592: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120
+2595: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160
+[あ ・ (あ]
+2598: pop
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+2599: y0 786432 v:=12451840+786432=13238272, vv:=839
+2600: push
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+2601: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2604: w3 199410 h:=630598+199410=830008, hh:=53
+2608: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68
+2611: w0 199410 h:=1061786+199410=1261196, hh:=80
+2612: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2615: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ ・ (あ]
+2618: pop
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+2619: y0 786432 v:=13238272+786432=14024704, vv:=888
+2620: push
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+2621: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2624: right3 199410 h:=630598+199410=830008, hh:=53
+2628: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68
+2631: set2 65288("FF08) type=6 h:=1061786+330310=1392096, hh:=89
+2634: set2 12354("3042) type=0 h:=1392096+630598=2022694, hh:=129
+[あ ・(あ]
+2637: pop
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+2638: y0 786432 v:=14024704+786432=14811136, vv:=938
+2639: push
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+2640: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2643: w3 199410 h:=630598+199410=830008, hh:=53
+2647: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68
+2650: w0 199410 h:=1061786+199410=1261196, hh:=80
+2651: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2654: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ ・ (あ]
+2657: pop
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+2658: y0 786432 v:=14811136+786432=15597568, vv:=988
+2659: push
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+2660: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2663: w3 199410 h:=630598+199410=830008, hh:=53
+2667: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68
+2670: w0 199410 h:=1061786+199410=1261196, hh:=80
+2671: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101
+2674: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141
+[あ ・ (あ]
+2677: pop
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+2678: y0 786432 v:=15597568+786432=16384000, vv:=1038
+2679: push
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+2680: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2683: right3 199410 h:=630598+199410=830008, hh:=53
+2687: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68
+2690: set2 65288("FF08) type=6 h:=1061786+330310=1392096, hh:=89
+2693: set2 12354("3042) type=0 h:=1392096+630598=2022694, hh:=129
+[あ ・(あ]
+2696: pop
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+2697: y0 786432 v:=16384000+786432=17170432, vv:=1088
+2698: push
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+2699: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+2702: fntnum1 current font is cmtt10
+2703: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+2704: setchar105 ("69) h:=974659+344061=1318720, hh:=84
+2705: setchar110 ("6E) h:=1318720+344061=1662781, hh:=106
+2706: setchar104 ("68) h:=1662781+344061=2006842, hh:=128
+2707: setchar105 ("69) h:=2006842+344061=2350903, hh:=150
+2708: setchar98 ("62) h:=2350903+344061=2694964, hh:=172
+2709: setchar105 ("69) h:=2694964+344061=3039025, hh:=194
+2710: setchar116 ("74) h:=3039025+344061=3383086, hh:=216
+2711: setchar103 ("67) h:=3383086+344061=3727147, hh:=238
+2712: setchar108 ("6C) h:=3727147+344061=4071208, hh:=260
+2713: setchar117 ("75) h:=4071208+344061=4415269, hh:=282
+2714: setchar101 ("65) h:=4415269+344061=4759330, hh:=303
+2715: w3 344061 h:=4759330+344061=5103391, hh:=323
+2719: setchar97 ("61) h:=5103391+344061=5447452, hh:=345
+2720: setchar116 ("74) h:=5447452+344061=5791513, hh:=367
+2721: w0 344061 h:=5791513+344061=6135574, hh:=389
+[\inhibitglue at ]
+2722: fntnum2 current font is umin10
+2723: set2 20869("5185) type=0 h:=6135574+630598=6766172, hh:=429
+2726: set2 20596("5074) type=0 h:=6766172+630598=7396770, hh:=469
+2729: set2 12522("30EA) type=10 h:=7396770+630598=8027368, hh:=509
+2732: set2 12473("30B9) type=0 h:=8027368+630598=8657966, hh:=549
+2735: set2 12488("30C8) type=10 h:=8657966+630598=9288564, hh:=589
+[内側リスト]
+2738: pop
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+2739: y0 786432 v:=17170432+786432=17956864, vv:=1137
+2740: push
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+2741: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2744: set2 65288("FF08) type=6 h:=630598+330310=960908, hh:=61
+[あ(]
+2747: pop
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+2748: y0 786432 v:=17956864+786432=18743296, vv:=1187
+2749: push
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+2750: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2753: right3 300288 h:=630598+300288=930886, hh:=59
+2757: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80
+[あ (]
+2760: pop
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+2761: y0 786432 v:=18743296+786432=19529728, vv:=1237
+2762: push
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+2763: set2 65289("FF09) type=1 h:=0+330310=330310, hh:=21
+2766: right3 600576 h:=330310+600576=930886, hh:=59
+2770: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80
+[) (]
+2773: pop
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+2774: y0 786432 v:=19529728+786432=20316160, vv:=1287
+2775: push
+level 1:(h=0,v=20316160,w=0,x=0,y=786432,z=0,hh=0,vv=1287)
+2776: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2779: w3 300288 h:=630598+300288=930886, hh:=59
+2783: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80
+2786: set2 12356("3044) type=0 h:=1261196+630598=1891794, hh:=120
+[あ (い]
+2789: push
+level 2:(h=1891794,v=20316160,w=300288,x=0,y=786432,z=0,hh=120,vv=1287)
+2790: push
+level 3:(h=1891794,v=20316160,w=300288,x=0,y=786432,z=0,hh=120,vv=1287)
+2791: w0 300288 h:=1891794+300288=2192082, hh:=139
+2792: set2 12300("300C) type=6 h:=2192082+330310=2522392, hh:=160
+[ 「]
+2795: pop
+level 3:(h=1891794,v=20316160,w=300288,x=0,y=786432,z=0,hh=120,vv=1287)
+2796: pop
+level 2:(h=1891794,v=20316160,w=300288,x=0,y=786432,z=0,hh=120,vv=1287)
+2797: pop
+level 1:(h=0,v=20316160,w=0,x=0,y=786432,z=0,hh=0,vv=1287)
+2798: y0 786432 v:=20316160+786432=21102592, vv:=1337
+2799: push
+level 1:(h=0,v=21102592,w=0,x=0,y=786432,z=0,hh=0,vv=1337)
+2800: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2803: w3 300288 h:=630598+300288=930886, hh:=59
+2807: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80
+2810: set2 12356("3044) type=0 h:=1261196+630598=1891794, hh:=120
+[あ (い]
+2813: push
+level 2:(h=1891794,v=21102592,w=300288,x=0,y=786432,z=0,hh=120,vv=1337)
+2814: push
+level 3:(h=1891794,v=21102592,w=300288,x=0,y=786432,z=0,hh=120,vv=1337)
+2815: w0 300288 h:=1891794+300288=2192082, hh:=139
+2816: set2 12300("300C) type=6 h:=2192082+330310=2522392, hh:=160
+[ 「]
+2819: pop
+level 3:(h=1891794,v=21102592,w=300288,x=0,y=786432,z=0,hh=120,vv=1337)
+2820: pop
+level 2:(h=1891794,v=21102592,w=300288,x=0,y=786432,z=0,hh=120,vv=1337)
+2821: pop
+level 1:(h=0,v=21102592,w=0,x=0,y=786432,z=0,hh=0,vv=1337)
+2822: y0 786432 v:=21102592+786432=21889024, vv:=1386
+2823: push
+level 1:(h=0,v=21889024,w=0,x=0,y=786432,z=0,hh=0,vv=1386)
+2824: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2827: set2 65288("FF08) type=6 h:=630598+330310=960908, hh:=61
+2830: set2 12356("3044) type=0 h:=960908+630598=1591506, hh:=101
+[あ(い]
+2833: push
+level 2:(h=1591506,v=21889024,w=0,x=0,y=786432,z=0,hh=101,vv=1386)
+2834: push
+level 3:(h=1591506,v=21889024,w=0,x=0,y=786432,z=0,hh=101,vv=1386)
+2835: right3 300288 h:=1591506+300288=1891794, hh:=120
+2839: set2 12300("300C) type=6 h:=1891794+330310=2222104, hh:=141
+[ 「]
+2842: pop
+level 3:(h=1591506,v=21889024,w=0,x=0,y=786432,z=0,hh=101,vv=1386)
+2843: pop
+level 2:(h=1591506,v=21889024,w=0,x=0,y=786432,z=0,hh=101,vv=1386)
+2844: pop
+level 1:(h=0,v=21889024,w=0,x=0,y=786432,z=0,hh=0,vv=1386)
+2845: y0 786432 v:=21889024+786432=22675456, vv:=1436
+2846: push
+level 1:(h=0,v=22675456,w=0,x=0,y=786432,z=0,hh=0,vv=1436)
+2847: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2850: right3 300288 h:=630598+300288=930886, hh:=59
+2854: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80
+2857: set2 12356("3044) type=0 h:=1261196+630598=1891794, hh:=120
+[あ (い]
+2860: push
+level 2:(h=1891794,v=22675456,w=0,x=0,y=786432,z=0,hh=120,vv=1436)
+2861: push
+level 3:(h=1891794,v=22675456,w=0,x=0,y=786432,z=0,hh=120,vv=1436)
+2862: set2 12300("300C) type=6 h:=1891794+330310=2222104, hh:=141
+[「]
+2865: pop
+level 3:(h=1891794,v=22675456,w=0,x=0,y=786432,z=0,hh=120,vv=1436)
+2866: pop
+level 2:(h=1891794,v=22675456,w=0,x=0,y=786432,z=0,hh=120,vv=1436)
+2867: pop
+level 1:(h=0,v=22675456,w=0,x=0,y=786432,z=0,hh=0,vv=1436)
+2868: y0 786432 v:=22675456+786432=23461888, vv:=1486
+2869: push
+level 1:(h=0,v=23461888,w=0,x=0,y=786432,z=0,hh=0,vv=1486)
+2870: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+2873: fntnum1 current font is cmtt10
+2874: setchar92 ("5C) h:=630598+344061=974659, hh:=62
+2875: setchar105 ("69) h:=974659+344061=1318720, hh:=84
+2876: setchar110 ("6E) h:=1318720+344061=1662781, hh:=106
+2877: setchar104 ("68) h:=1662781+344061=2006842, hh:=128
+2878: setchar105 ("69) h:=2006842+344061=2350903, hh:=150
+2879: setchar98 ("62) h:=2350903+344061=2694964, hh:=172
+2880: setchar105 ("69) h:=2694964+344061=3039025, hh:=194
+2881: setchar116 ("74) h:=3039025+344061=3383086, hh:=216
+2882: setchar103 ("67) h:=3383086+344061=3727147, hh:=238
+2883: setchar108 ("6C) h:=3727147+344061=4071208, hh:=260
+2884: setchar117 ("75) h:=4071208+344061=4415269, hh:=282
+2885: setchar101 ("65) h:=4415269+344061=4759330, hh:=303
+2886: right3 344061 h:=4759330+344061=5103391, hh:=323
+2890: setchar116 ("74) h:=5103391+344061=5447452, hh:=345
+2891: setchar101 ("65) h:=5447452+344061=5791513, hh:=367
+2892: setchar115 ("73) h:=5791513+344061=6135574, hh:=389
+2893: setchar116 ("74) h:=6135574+344061=6479635, hh:=411
+[\inhibitglue test]
+2894: pop
+level 1:(h=0,v=23461888,w=0,x=0,y=786432,z=0,hh=0,vv=1486)
+2895: y0 786432 v:=23461888+786432=24248320, vv:=1536
+2896: push
+level 1:(h=0,v=24248320,w=0,x=0,y=786432,z=0,hh=0,vv=1536)
+2897: fntnum2 current font is umin10
+2898: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2901: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2904: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101
+[あ)あ]
+2907: pop
+level 1:(h=0,v=24248320,w=0,x=0,y=786432,z=0,hh=0,vv=1536)
+2908: y0 786432 v:=24248320+786432=25034752, vv:=1586
+2909: push
+level 1:(h=0,v=25034752,w=0,x=0,y=786432,z=0,hh=0,vv=1586)
+2910: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2913: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2916: right3 300288 h:=960908+300288=1261196, hh:=80
+2920: set2 12354("3042) type=0 h:=1261196+630598=1891794, hh:=120
+[あ) あ]
+2923: pop
+level 1:(h=0,v=25034752,w=0,x=0,y=786432,z=0,hh=0,vv=1586)
+2924: y0 786432 v:=25034752+786432=25821184, vv:=1636
+2925: push
+level 1:(h=0,v=25821184,w=0,x=0,y=786432,z=0,hh=0,vv=1636)
+2926: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2929: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2932: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101
+[あ)あ]
+2935: pop
+level 1:(h=0,v=25821184,w=0,x=0,y=786432,z=0,hh=0,vv=1636)
+2936: y0 786432 v:=25821184+786432=26607616, vv:=1685
+2937: push
+level 1:(h=0,v=26607616,w=0,x=0,y=786432,z=0,hh=0,vv=1685)
+2938: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2941: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2944: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101
+[あ)あ]
+2947: pop
+level 1:(h=0,v=26607616,w=0,x=0,y=786432,z=0,hh=0,vv=1685)
+2948: y0 786432 v:=26607616+786432=27394048, vv:=1735
+2949: push
+level 1:(h=0,v=27394048,w=0,x=0,y=786432,z=0,hh=0,vv=1735)
+2950: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2953: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2956: right3 300288 h:=960908+300288=1261196, hh:=80
+2960: set2 12354("3042) type=0 h:=1261196+630598=1891794, hh:=120
+[あ) あ]
+2963: pop
+level 1:(h=0,v=27394048,w=0,x=0,y=786432,z=0,hh=0,vv=1735)
+2964: y0 786432 v:=27394048+786432=28180480, vv:=1785
+2965: push
+level 1:(h=0,v=28180480,w=0,x=0,y=786432,z=0,hh=0,vv=1785)
+2966: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40
+2969: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61
+2972: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101
+[あ)あ]
+2975: pop
+level 1:(h=0,v=28180480,w=0,x=0,y=786432,z=0,hh=0,vv=1785)
+2976: y0 786432 v:=28180480+786432=28966912, vv:=1835
+2977: push
+level 1:(h=0,v=28966912,w=0,x=0,y=786432,z=0,hh=0,vv=1835)
+2978: down3 91000 v:=28966912+91000=29057912, vv:=1841
+2982: setrule height 600600, width 26214 (39x2 pixels)
+ h:=0+26214=26214, hh:=2
+2991: down3 -91000 v:=29057912-91000=28966912, vv:=1835
+2995: set2 65307("FF1B) type=4 h:=26214+231778=257992, hh:=17
+2998: right3 199410 h:=257992+199410=457402, hh:=29
+3002: set2 12354("3042) type=0 h:=457402+630598=1088000, hh:=69
+3005: right3 300288 h:=1088000+300288=1388288, hh:=88
+3009: set2 65288("FF08) type=6 h:=1388288+330310=1718598, hh:=109
+[; あ (]
+3012: pop
+level 1:(h=0,v=28966912,w=0,x=0,y=786432,z=0,hh=0,vv=1835)
+3013: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+3014: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+3018: eop
diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-jctrlsyma.typ b/Build/source/texk/web2c/euptexdir/tests/eup-jctrlsyma.typ
new file mode 100644
index 00000000000..27132f1cea0
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/eup-jctrlsyma.typ
@@ -0,0 +1,121 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 287.
+maxv=43725786, maxh=30785863, maxstackdepth=2, totalpages=1
+Font 1: umin10 (JFM)---loaded at size 655360 DVI units
+Font 0: cmr10---loaded at size 655360 DVI units
+
+42: beginning of page 1
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+109: fntdef1 0: cmr10
+130: fntnum0 current font is cmr10
+131: setchar49 ("31) h:=1310720+327681=1638401, hh:=104
+132: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116
+133: right3 291271 h:=1820446+291271=2111717, hh:=134
+[1. ]
+137: fntdef1 1: umin10
+159: fntnum1 current font is umin10
+160: set2 9670("25C6) type=0 h:=2111717+630598=2742315, hh:=174
+163: set2 9671("25C7) type=0 h:=2742315+630598=3372913, hh:=214
+166: set2 9670("25C6) type=0 h:=3372913+630598=4003511, hh:=254
+169: set2 9671("25C7) type=0 h:=4003511+630598=4634109, hh:=294
+[◆◇◆◇]
+172: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+173: y3 786432 v:=655360+786432=1441792, vv:=91
+177: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+178: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+182: fntnum0 current font is cmr10
+183: setchar50 ("32) h:=1310720+327681=1638401, hh:=104
+184: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116
+185: right3 291271 h:=1820446+291271=2111717, hh:=134
+[2. ]
+189: fntnum1 current font is umin10
+190: set2 9670("25C6) type=0 h:=2111717+630598=2742315, hh:=174
+193: set2 9671("25C7) type=0 h:=2742315+630598=3372913, hh:=214
+[◆◇]
+196: fntnum0 current font is cmr10
+197: setchar44 ("2C) h:=3372913+182045=3554958, hh:=226
+198: right3 218453 h:=3554958+218453=3773411, hh:=239
+[, ]
+202: fntnum1 current font is umin10
+203: set2 9670("25C6) type=0 h:=3773411+630598=4404009, hh:=279
+206: set2 9671("25C7) type=0 h:=4404009+630598=5034607, hh:=319
+[◆◇]
+209: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+210: y0 786432 v:=1441792+786432=2228224, vv:=141
+211: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+212: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+216: fntnum0 current font is cmr10
+217: setchar51 ("33) h:=1310720+327681=1638401, hh:=104
+218: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116
+219: right3 291271 h:=1820446+291271=2111717, hh:=134
+[3. ]
+223: fntnum1 current font is umin10
+224: set2 9670("25C6) type=0 h:=2111717+630598=2742315, hh:=174
+227: set2 9671("25C7) type=0 h:=2742315+630598=3372913, hh:=214
+[◆◇]
+230: fntnum0 current font is cmr10
+231: setchar44 ("2C) h:=3372913+182045=3554958, hh:=226
+232: w3 218453 h:=3554958+218453=3773411, hh:=239
+[, ]
+236: fntnum1 current font is umin10
+237: set2 9670("25C6) type=0 h:=3773411+630598=4404009, hh:=279
+240: w0 218453 h:=4404009+218453=4622462, hh:=293
+241: set2 9671("25C7) type=0 h:=4622462+630598=5253060, hh:=333
+[◆ ◇]
+244: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+245: y0 786432 v:=2228224+786432=3014656, vv:=191
+246: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+247: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+251: fntnum0 current font is cmr10
+252: setchar52 ("34) h:=1310720+327681=1638401, hh:=104
+253: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116
+254: right3 291271 h:=1820446+291271=2111717, hh:=134
+[4. ]
+258: fntnum1 current font is umin10
+259: set2 9670("25C6) type=0 h:=2111717+630598=2742315, hh:=174
+262: w3 218453 h:=2742315+218453=2960768, hh:=188
+266: set2 9671("25C7) type=0 h:=2960768+630598=3591366, hh:=228
+[◆ ◇]
+269: fntnum0 current font is cmr10
+270: setchar44 ("2C) h:=3591366+182045=3773411, hh:=240
+271: w0 218453 h:=3773411+218453=3991864, hh:=253
+[, ]
+272: fntnum1 current font is umin10
+273: set2 9670("25C6) type=0 h:=3991864+630598=4622462, hh:=293
+276: w0 218453 h:=4622462+218453=4840915, hh:=307
+277: set2 9671("25C7) type=0 h:=4840915+630598=5471513, hh:=347
+[◆ ◇]
+280: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+281: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+282: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+286: eop
diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ea.typ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ea.typ
new file mode 100644
index 00000000000..cf8d08f7715
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ea.typ
@@ -0,0 +1,825 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 1055.
+maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1
+Font 1: min10 (JFM)---loaded at size 655360 DVI units
+Font 0: ec-lmr10---loaded at size 655360 DVI units
+
+42: beginning of page 50623
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+109: fntdef1 0: ec-lmr10
+133: fntnum0 current font is ec-lmr10
+134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114
+135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126
+136: w3 218453 h:=1984283+218453=2202736, hh:=140
+[A: ]
+140: set1 197("C5) h:=2202736+491520=2694256, hh:=171
+142: set1 191("BF) h:=2694256+491520=3185776, hh:=202
+144: w0 218453 h:=3185776+218453=3404229, hh:=216
+[ ]
+145: set1 197("C5) h:=3404229+491520=3895749, hh:=247
+147: set1 191("BF) h:=3895749+491520=4387269, hh:=278
+149: w0 218453 h:=4387269+218453=4605722, hh:=292
+[ ]
+150: fntdef1 1: min10
+171: fntnum1 current font is min10
+172: set2 17727("453F) type=0 h:=4605722+630598=5236320, hh:=332
+[䔿]
+175: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+176: y3 786432 v:=655360+786432=1441792, vv:=91
+180: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+181: push
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+182: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+185: pop
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+186: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+190: fntnum0 current font is ec-lmr10
+191: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+192: setchar109 ("6D) h:=958278+546111=1504389, hh:=96
+193: setchar101 ("65) h:=1504389+291275=1795664, hh:=114
+194: setchar97 ("61) h:=1795664+327680=2123344, hh:=135
+195: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158
+196: setchar105 ("69) h:=2487429+182043=2669472, hh:=170
+197: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193
+198: setchar103 ("67) h:=3033557+327680=3361237, hh:=214
+199: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226
+[\meaning.]
+200: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+201: y0 786432 v:=1441792+786432=2228224, vv:=141
+202: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+203: right3 1310720 h:=0+1310720=1310720, hh:=83
+207: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+208: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+209: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+210: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+211: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+212: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+213: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+214: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+215: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287
+216: setchar97 ("61) h:=4516494+327680=4844174, hh:=308
+217: setchar99 ("63) h:=4844174+291275=5135449, hh:=326
+218: setchar114 ("72) h:=5135449+256683=5392132, hh:=342
+219: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363
+220: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375
+221: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389
+222: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421
+[ macro:->macro:->]
+223: set1 197("C5) h:=6630046+491520=7121566, hh:=452
+225: set1 191("BF) h:=7121566+491520=7613086, hh:=483
+227: w3 218453 h:=7613086+218453=7831539, hh:=496
+[ ]
+231: set1 197("C5) h:=7831539+491520=8323059, hh:=527
+233: set1 191("BF) h:=8323059+491520=8814579, hh:=558
+235: w0 218453 h:=8814579+218453=9033032, hh:=572
+[ ]
+236: fntnum1 current font is min10
+237: set2 17727("453F) type=0 h:=9033032+630598=9663630, hh:=612
+[䔿]
+240: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+241: y0 786432 v:=2228224+786432=3014656, vv:=191
+242: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+243: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+247: fntnum0 current font is ec-lmr10
+248: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+249: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+250: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+251: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+252: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+253: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+254: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+255: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+[macro:->]
+256: set1 197("C5) h:=3970383+491520=4461903, hh:=283
+258: set1 191("BF) h:=4461903+491520=4953423, hh:=314
+260: w3 218453 h:=4953423+218453=5171876, hh:=328
+[ ]
+264: set1 197("C5) h:=5171876+491520=5663396, hh:=359
+266: set1 191("BF) h:=5663396+491520=6154916, hh:=390
+268: w0 218453 h:=6154916+218453=6373369, hh:=404
+[ ]
+269: fntnum1 current font is min10
+270: set2 17727("453F) type=0 h:=6373369+630598=7003967, hh:=444
+[䔿]
+273: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+274: y0 786432 v:=3014656+786432=3801088, vv:=241
+275: push
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+276: push
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+277: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+280: pop
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+281: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+285: fntnum0 current font is ec-lmr10
+286: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+287: setchar106 ("6A) h:=958278+200245=1158523, hh:=74
+288: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95
+289: setchar98 ("62) h:=1486203+364085=1850288, hh:=118
+290: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141
+291: setchar97 ("61) h:=2214373+327680=2542053, hh:=162
+292: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197
+293: setchar101 ("65) h:=3088164+291275=3379439, hh:=215
+294: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227
+[\jobname.]
+295: pop
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+296: y0 786432 v:=3801088+786432=4587520, vv:=291
+297: push
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+298: push
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+299: fntnum1 current font is min10
+300: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+303: pop
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+304: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+308: fntnum0 current font is ec-lmr10
+309: setchar111 ("6F) h:=630598+327680=958278, hh:=61
+310: setchar110 ("6E) h:=958278+364085=1322363, hh:=84
+311: setchar101 ("65) h:=1322363+291275=1613638, hh:=102
+312: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114
+313: setchar101 ("65) h:=1795681+291275=2086956, hh:=132
+314: setchar116 ("74) h:=2086956+254870=2341826, hh:=148
+315: setchar116 ("74) h:=2341826+254870=2596696, hh:=164
+316: setchar101 ("65) h:=2596696+291275=2887971, hh:=182
+317: setchar114 ("72) h:=2887971+256683=3144654, hh:=198
+318: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210
+[oneletter.]
+319: pop
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+320: y0 786432 v:=4587520+786432=5373952, vv:=340
+321: push
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+322: right3 1310720 h:=0+1310720=1310720, hh:=83
+326: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+327: set1 196("C4) h:=1638400+491520=2129920, hh:=135
+329: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147
+330: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168
+[.\]
+331: set1 197("C5) h:=2639643+491520=3131163, hh:=199
+333: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211
+334: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232
+[.\]
+335: set1 255("FF) h:=3640886+327680=3968566, hh:=253
+337: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265
+338: right3 291271 h:=4150609+291271=4441880, hh:=281
+[. ]
+342: set1 191("BF) h:=4441880+491520=4933400, hh:=312
+344: pop
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+345: y0 786432 v:=5373952+786432=6160384, vv:=390
+346: push
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+347: push
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+348: fntnum1 current font is min10
+349: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+352: pop
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+353: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+357: fntnum0 current font is ec-lmr10
+358: setchar99 ("63) h:=630598+291275=921873, hh:=58
+359: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+360: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+361: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+362: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+363: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+364: setchar49 ("31) h:=2709530+327680=3037210, hh:=192
+365: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname1.]
+366: pop
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+367: y0 786432 v:=6160384+786432=6946816, vv:=440
+368: push
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+369: right3 1310720 h:=0+1310720=1310720, hh:=83
+373: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+374: set1 197("C5) h:=1638400+491520=2129920, hh:=135
+376: set1 191("BF) h:=2129920+491520=2621440, hh:=166
+378: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187
+[\]
+379: set1 197("C5) h:=2949120+491520=3440640, hh:=218
+381: set1 191("BF) h:=3440640+491520=3932160, hh:=249
+383: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261
+384: w3 218453 h:=4114203+218453=4332656, hh:=274
+388: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295
+[, \]
+389: set1 197("C5) h:=4660336+491520=5151856, hh:=326
+391: set1 191("BF) h:=5151856+491520=5643376, hh:=357
+393: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369
+394: w0 218453 h:=5825419+218453=6043872, hh:=383
+395: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404
+[, \]
+396: fntnum1 current font is min10
+397: set2 17727("453F) type=0 h:=6371552+630598=7002150, hh:=444
+[䔿]
+400: pop
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+401: y0 786432 v:=6946816+786432=7733248, vv:=490
+402: push
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+403: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+407: fntnum0 current font is ec-lmr10
+408: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[\]
+409: fntnum1 current font is min10
+410: set2 9250("2422) type=0 h:=1638400+630598=2268998, hh:=144
+[␢]
+413: fntnum0 current font is ec-lmr10
+414: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176
+415: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208
+416: right3 218453 h:=3288474+218453=3506927, hh:=222
+420: setchar104 ("68) h:=3506927+364085=3871012, hh:=245
+421: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266
+422: setchar103 ("67) h:=4198692+327680=4526372, hh:=287
+423: setchar101 ("65) h:=4526372+291275=4817647, hh:=305
+424: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317
+[=> hoge,]
+425: pop
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+426: y0 786432 v:=7733248+786432=8519680, vv:=540
+427: push
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+428: right3 1310720 h:=0+1310720=1310720, hh:=83
+432: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+433: set1 164("A4) h:=1638400+364085=2002485, hh:=127
+435: set1 162("A2) h:=2002485+291275=2293760, hh:=145
+437: setchar61 ("3D) h:=2293760+509738=2803498, hh:=177
+438: setchar62 ("3E) h:=2803498+509738=3313236, hh:=209
+439: right3 218453 h:=3313236+218453=3531689, hh:=224
+443: setchar112 ("70) h:=3531689+364085=3895774, hh:=247
+444: setchar105 ("69) h:=3895774+182043=4077817, hh:=259
+445: setchar121 ("79) h:=4077817+345898=4423715, hh:=281
+446: right2 -18205 h:=4423715-18205=4405510, hh:=280
+449: setchar111 ("6F) h:=4405510+327680=4733190, hh:=301
+450: setchar44 ("2C) h:=4733190+182043=4915233, hh:=313
+[=> piyo,]
+451: pop
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+452: y0 786432 v:=8519680+786432=9306112, vv:=589
+453: push
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+454: right3 1310720 h:=0+1310720=1310720, hh:=83
+458: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+459: set1 164("A4) h:=1638400+364085=2002485, hh:=127
+461: set1 162("A2) h:=2002485+291275=2293760, hh:=145
+463: setchar61 ("3D) h:=2293760+509738=2803498, hh:=177
+464: setchar62 ("3E) h:=2803498+509738=3313236, hh:=209
+465: right3 218453 h:=3313236+218453=3531689, hh:=224
+469: setchar112 ("70) h:=3531689+364085=3895774, hh:=247
+470: setchar105 ("69) h:=3895774+182043=4077817, hh:=259
+471: setchar121 ("79) h:=4077817+345898=4423715, hh:=281
+472: right2 -18205 h:=4423715-18205=4405510, hh:=280
+475: setchar111 ("6F) h:=4405510+327680=4733190, hh:=301
+476: setchar46 ("2E) h:=4733190+182043=4915233, hh:=313
+[=> piyo.]
+477: pop
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+478: y0 786432 v:=9306112+786432=10092544, vv:=639
+479: push
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+480: push
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+481: fntnum1 current font is min10
+482: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+485: pop
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+486: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+490: fntnum0 current font is ec-lmr10
+491: setchar48 ("30) h:=630598+327680=958278, hh:=61
+492: setchar120 ("78) h:=958278+345898=1304176, hh:=83
+493: setchar70 ("46) h:=1304176+427818=1731994, hh:=110
+494: setchar70 ("46) h:=1731994+427818=2159812, hh:=137
+495: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149
+[0xFF.]
+496: pop
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+497: y0 786432 v:=10092544+786432=10878976, vv:=689
+498: push
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+499: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+503: fntnum1 current font is min10
+504: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[␢]
+507: fntnum0 current font is ec-lmr10
+508: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+509: w3 218453 h:=2123361+218453=2341814, hh:=148
+513: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+514: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+515: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+517: set1 197("C5) h:=3252044+491520=3743564, hh:=237
+519: set1 255("FF) h:=3743564+327680=4071244, hh:=258
+521: set1 191("BF) h:=4071244+491520=4562764, hh:=289
+523: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301
+524: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336
+525: setchar97 ("61) h:=5290918+327680=5618598, hh:=357
+526: setchar99 ("63) h:=5618598+291275=5909873, hh:=375
+527: setchar114 ("72) h:=5909873+256683=6166556, hh:=391
+528: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412
+529: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424
+530: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438
+531: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470
+[:macro:->]
+532: fntnum1 current font is min10
+533: set2 9250("2422) type=0 h:=7404470+630598=8035068, hh:=510
+[␢]
+536: fntnum0 current font is ec-lmr10
+537: setchar41 ("29) h:=8035068+254870=8289938, hh:=526
+538: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538
+539: w0 218453 h:=8471981+218453=8690434, hh:=550
+540: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571
+[), \]
+541: set1 255("FF) h:=9018114+327680=9345794, hh:=592
+543: set1 197("C5) h:=9345794+491520=9837314, hh:=623
+545: set1 255("FF) h:=9837314+327680=10164994, hh:=644
+547: set1 191("BF) h:=10164994+491520=10656514, hh:=675
+549: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687
+550: w0 218453 h:=10838557+218453=11057010, hh:=700
+551: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735
+552: setchar97 ("61) h:=11603121+327680=11930801, hh:=756
+553: setchar99 ("63) h:=11930801+291275=12222076, hh:=774
+554: setchar114 ("72) h:=12222076+256683=12478759, hh:=790
+555: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811
+556: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823
+557: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837
+558: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869
+559: setchar40 ("28) h:=13716673+254870=13971543, hh:=885
+560: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906
+[, macro:->(\]
+561: set1 255("FF) h:=14299223+327680=14626903, hh:=927
+563: set1 197("C5) h:=14626903+491520=15118423, hh:=958
+565: set1 255("FF) h:=15118423+327680=15446103, hh:=979
+567: set1 191("BF) h:=15446103+491520=15937623, hh:=1010
+569: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022
+570: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057
+571: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078
+572: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096
+573: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112
+574: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133
+575: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145
+576: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159
+577: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191
+[:macro:->]
+578: fntnum1 current font is min10
+579: set2 9250("2422) type=0 h:=18779329+630598=19409927, hh:=1231
+[␢]
+582: fntnum0 current font is ec-lmr10
+583: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247
+584: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259
+[).]
+585: pop
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+586: y0 786432 v:=10878976+786432=11665408, vv:=739
+587: push
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+588: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+592: fntnum1 current font is min10
+593: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123
+[␤]
+596: fntnum0 current font is ec-lmr10
+597: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+598: w3 218453 h:=2123361+218453=2341814, hh:=148
+602: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+603: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+604: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+606: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218
+607: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253
+608: setchar97 ("61) h:=3980198+327680=4307878, hh:=274
+609: setchar99 ("63) h:=4307878+291275=4599153, hh:=292
+610: setchar114 ("72) h:=4599153+256683=4855836, hh:=308
+611: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329
+612: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341
+613: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355
+614: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387
+[:macro:->]
+615: fntnum1 current font is min10
+616: set2 9252("2424) type=0 h:=6093750+630598=6724348, hh:=427
+[␤]
+619: fntnum0 current font is ec-lmr10
+620: setchar41 ("29) h:=6724348+254870=6979218, hh:=443
+621: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455
+622: w0 218453 h:=7161261+218453=7379714, hh:=467
+623: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488
+[), \]
+624: set1 255("FF) h:=7707394+327680=8035074, hh:=509
+626: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521
+627: w0 218453 h:=8217117+218453=8435570, hh:=534
+628: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569
+629: setchar97 ("61) h:=8981681+327680=9309361, hh:=590
+630: setchar99 ("63) h:=9309361+291275=9600636, hh:=608
+631: setchar114 ("72) h:=9600636+256683=9857319, hh:=624
+632: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645
+633: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657
+634: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671
+635: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703
+636: setchar40 ("28) h:=11095233+254870=11350103, hh:=719
+637: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740
+[, macro:->(\]
+638: set1 255("FF) h:=11677783+327680=12005463, hh:=761
+640: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773
+641: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808
+642: setchar97 ("61) h:=12733617+327680=13061297, hh:=829
+643: setchar99 ("63) h:=13061297+291275=13352572, hh:=847
+644: setchar114 ("72) h:=13352572+256683=13609255, hh:=863
+645: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884
+646: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896
+647: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910
+648: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942
+[:macro:->]
+649: fntnum1 current font is min10
+650: set2 9252("2424) type=0 h:=14847169+630598=15477767, hh:=982
+[␤]
+653: fntnum0 current font is ec-lmr10
+654: setchar41 ("29) h:=15477767+254870=15732637, hh:=998
+655: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010
+[).]
+656: pop
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+657: y0 786432 v:=11665408+786432=12451840, vv:=789
+658: push
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+659: push
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+660: fntnum1 current font is min10
+661: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+664: pop
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+665: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+669: fntnum0 current font is ec-lmr10
+670: setchar99 ("63) h:=630598+291275=921873, hh:=58
+671: setchar111 ("6F) h:=921873+327680=1249553, hh:=79
+672: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102
+673: right2 -18205 h:=1613638-18205=1595433, hh:=101
+676: setchar116 ("74) h:=1595433+254870=1850303, hh:=117
+677: setchar101 ("65) h:=1850303+291275=2141578, hh:=135
+678: setchar120 ("78) h:=2141578+345898=2487476, hh:=157
+679: setchar116 ("74) h:=2487476+254870=2742346, hh:=173
+680: setchar115 ("73) h:=2742346+258506=3000852, hh:=189
+681: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201
+[contexts.]
+682: pop
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+683: y0 786432 v:=12451840+786432=13238272, vv:=839
+684: push
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+685: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+689: fntnum1 current font is min10
+690: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[␢]
+693: fntnum0 current font is ec-lmr10
+694: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+696: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+698: w3 218453 h:=2924358+218453=3142811, hh:=199
+702: setchar97 ("61) h:=3142811+327680=3470491, hh:=220
+[ a]
+703: set1 197("C5) h:=3470491+491520=3962011, hh:=251
+705: set1 191("BF) h:=3962011+491520=4453531, hh:=282
+707: w0 218453 h:=4453531+218453=4671984, hh:=296
+[ ]
+708: set1 197("C5) h:=4671984+491520=5163504, hh:=327
+710: set1 191("BF) h:=5163504+491520=5655024, hh:=358
+712: w0 218453 h:=5655024+218453=5873477, hh:=372
+[ ]
+713: fntnum1 current font is min10
+714: set2 17727("453F) type=0 h:=5873477+630598=6504075, hh:=412
+717: w0 218453 h:=6504075+218453=6722528, hh:=426
+[䔿 ]
+718: fntnum0 current font is ec-lmr10
+719: set1 197("C5) h:=6722528+491520=7214048, hh:=457
+721: set1 191("BF) h:=7214048+491520=7705568, hh:=488
+723: w0 218453 h:=7705568+218453=7924021, hh:=502
+[ ]
+724: set1 197("C5) h:=7924021+491520=8415541, hh:=533
+726: set1 191("BF) h:=8415541+491520=8907061, hh:=564
+728: w0 218453 h:=8907061+218453=9125514, hh:=578
+[ ]
+729: fntnum1 current font is min10
+730: set2 17727("453F) type=0 h:=9125514+630598=9756112, hh:=618
+733: x3 436906 h:=9756112+436906=10193018, hh:=646
+[䔿 ]
+737: fntnum0 current font is ec-lmr10
+738: set1 197("C5) h:=10193018+491520=10684538, hh:=677
+740: set1 191("BF) h:=10684538+491520=11176058, hh:=708
+742: w0 218453 h:=11176058+218453=11394511, hh:=722
+[ ]
+743: fntnum1 current font is min10
+744: set2 17727("453F) type=0 h:=11394511+630598=12025109, hh:=762
+747: x0 436906 h:=12025109+436906=12462015, hh:=789
+748: set2 9252("2424) type=0 h:=12462015+630598=13092613, hh:=829
+[䔿 ␤]
+751: fntnum0 current font is ec-lmr10
+752: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864
+753: setchar97 ("61) h:=13638724+327680=13966404, hh:=885
+754: setchar99 ("63) h:=13966404+291275=14257679, hh:=903
+755: setchar114 ("72) h:=14257679+256683=14514362, hh:=919
+756: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940
+757: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952
+758: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966
+759: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998
+[macro:->]
+760: set1 197("C5) h:=15752276+491520=16243796, hh:=1029
+762: set1 191("BF) h:=16243796+491520=16735316, hh:=1060
+764: w0 218453 h:=16735316+218453=16953769, hh:=1074
+[ ]
+765: set1 197("C5) h:=16953769+491520=17445289, hh:=1105
+767: set1 191("BF) h:=17445289+491520=17936809, hh:=1136
+769: w0 218453 h:=17936809+218453=18155262, hh:=1150
+[ ]
+770: fntnum1 current font is min10
+771: set2 17727("453F) type=0 h:=18155262+630598=18785860, hh:=1190
+[䔿]
+774: pop
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+775: y0 786432 v:=13238272+786432=14024704, vv:=888
+776: push
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+777: right3 1310720 h:=0+1310720=1310720, hh:=83
+781: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[ ␢]
+784: fntnum0 current font is ec-lmr10
+785: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+787: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+789: w3 218453 h:=2924358+218453=3142811, hh:=199
+[ ]
+793: set1 197("C5) h:=3142811+491520=3634331, hh:=230
+795: set1 191("BF) h:=3634331+491520=4125851, hh:=261
+797: fntnum1 current font is min10
+798: set2 17727("453F) type=0 h:=4125851+630598=4756449, hh:=301
+[䔿]
+801: fntnum0 current font is ec-lmr10
+802: set1 197("C5) h:=4756449+491520=5247969, hh:=332
+804: set1 191("BF) h:=5247969+491520=5739489, hh:=363
+806: w0 218453 h:=5739489+218453=5957942, hh:=377
+807: setchar97 ("61) h:=5957942+327680=6285622, hh:=398
+[ a]
+808: set1 197("C5) h:=6285622+491520=6777142, hh:=429
+810: set1 191("BF) h:=6777142+491520=7268662, hh:=460
+812: w0 218453 h:=7268662+218453=7487115, hh:=474
+[ ]
+813: set1 197("C5) h:=7487115+491520=7978635, hh:=505
+815: set1 191("BF) h:=7978635+491520=8470155, hh:=536
+817: w0 218453 h:=8470155+218453=8688608, hh:=550
+[ ]
+818: fntnum1 current font is min10
+819: set2 17727("453F) type=0 h:=8688608+630598=9319206, hh:=590
+822: w0 218453 h:=9319206+218453=9537659, hh:=604
+[䔿 ]
+823: fntnum0 current font is ec-lmr10
+824: set1 197("C5) h:=9537659+491520=10029179, hh:=635
+826: set1 191("BF) h:=10029179+491520=10520699, hh:=666
+828: w0 218453 h:=10520699+218453=10739152, hh:=680
+[ ]
+829: set1 197("C5) h:=10739152+491520=11230672, hh:=711
+831: set1 191("BF) h:=11230672+491520=11722192, hh:=742
+833: w0 218453 h:=11722192+218453=11940645, hh:=756
+[ ]
+834: fntnum1 current font is min10
+835: set2 17727("453F) type=0 h:=11940645+630598=12571243, hh:=796
+838: right3 436906 h:=12571243+436906=13008149, hh:=824
+[䔿 ]
+842: fntnum0 current font is ec-lmr10
+843: set1 197("C5) h:=13008149+491520=13499669, hh:=855
+845: set1 191("BF) h:=13499669+491520=13991189, hh:=886
+847: w0 218453 h:=13991189+218453=14209642, hh:=900
+[ ]
+848: fntnum1 current font is min10
+849: set2 17727("453F) type=0 h:=14209642+630598=14840240, hh:=940
+852: w0 218453 h:=14840240+218453=15058693, hh:=954
+853: set2 9252("2424) type=0 h:=15058693+630598=15689291, hh:=994
+[䔿 ␤]
+856: fntnum0 current font is ec-lmr10
+857: set1 255("FF) h:=15689291+327680=16016971, hh:=1015
+859: pop
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+860: y0 786432 v:=14024704+786432=14811136, vv:=938
+861: push
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+862: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+866: fntnum1 current font is min10
+867: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123
+[␤]
+870: pop
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+871: y0 786432 v:=14811136+786432=15597568, vv:=988
+872: push
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+873: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+877: fntnum0 current font is ec-lmr10
+878: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+879: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+880: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+881: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+882: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+883: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+884: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+885: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+886: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+887: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[.a...c.b..]
+888: pop
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+889: y0 786432 v:=15597568+786432=16384000, vv:=1038
+890: push
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+891: right3 1310720 h:=0+1310720=1310720, hh:=83
+895: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+896: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+897: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+898: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+899: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+900: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+901: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+902: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+903: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+904: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[ .a...c.b..]
+905: pop
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+906: y0 786432 v:=16384000+786432=17170432, vv:=1088
+907: push
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+908: push
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+909: fntnum1 current font is min10
+910: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+913: pop
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+914: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+918: fntnum0 current font is ec-lmr10
+919: setchar99 ("63) h:=630598+291275=921873, hh:=58
+920: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+921: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+922: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+923: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+924: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+925: setchar50 ("32) h:=2709530+327680=3037210, hh:=192
+926: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname2.]
+927: pop
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+928: y0 786432 v:=17170432+786432=17956864, vv:=1137
+929: push
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+930: right3 1310720 h:=0+1310720=1310720, hh:=83
+934: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+935: setchar72 ("48) h:=1674805+491520=2166325, hh:=137
+936: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169
+937: right2 -18205 h:=2676063-18205=2657858, hh:=168
+940: setchar87 ("57) h:=2657858+673578=3331436, hh:=211
+941: right3 218453 h:=3331436+218453=3549889, hh:=225
+945: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237
+946: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249
+947: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261
+[ SHOW ...]
+948: pop
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+949: y0 786432 v:=17956864+786432=18743296, vv:=1187
+950: push
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+951: right3 1310720 h:=0+1310720=1310720, hh:=83
+955: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+956: setchar84 ("54) h:=1674805+473301=2148106, hh:=136
+957: setchar82 ("52) h:=2148106+482410=2630516, hh:=167
+958: setchar73 ("49) h:=2630516+236650=2867166, hh:=182
+959: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213
+960: setchar71 ("47) h:=3358686+514261=3872947, hh:=246
+961: right3 218453 h:=3872947+218453=4091400, hh:=259
+965: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280
+[ STRING \]
+966: set1 197("C5) h:=4419080+491520=4910600, hh:=311
+968: set1 191("BF) h:=4910600+491520=5402120, hh:=342
+970: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354
+971: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375
+[.\]
+972: fntnum1 current font is min10
+973: set2 17727("453F) type=0 h:=5911843+630598=6542441, hh:=415
+[䔿]
+976: fntnum0 current font is ec-lmr10
+977: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427
+978: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448
+[.\]
+979: set1 197("C5) h:=7052164+491520=7543684, hh:=479
+981: set1 191("BF) h:=7543684+491520=8035204, hh:=510
+983: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522
+984: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543
+[.\]
+985: fntnum1 current font is min10
+986: set2 17727("453F) type=0 h:=8544927+630598=9175525, hh:=583
+[䔿]
+989: pop
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+990: y0 786432 v:=18743296+786432=19529728, vv:=1237
+991: push
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+992: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+996: fntnum0 current font is ec-lmr10
+997: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121
+998: setchar69 ("45) h:=1911488+446005=2357493, hh:=149
+999: setchar65 ("41) h:=2357493+491520=2849013, hh:=180
+1000: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211
+1001: setchar73 ("49) h:=3340533+236650=3577183, hh:=226
+1002: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257
+1003: setchar71 ("47) h:=4068703+514261=4582964, hh:=290
+1004: right3 218453 h:=4582964+218453=4801417, hh:=304
+1008: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339
+1009: setchar97 ("61) h:=5347528+327680=5675208, hh:=360
+1010: setchar99 ("63) h:=5675208+291275=5966483, hh:=378
+1011: setchar114 ("72) h:=5966483+256683=6223166, hh:=394
+1012: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415
+1013: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427
+1014: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441
+1015: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473
+1016: setchar97 ("61) h:=7461080+327680=7788760, hh:=494
+1017: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506
+1018: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541
+1019: setchar97 ("61) h:=8516914+327680=8844594, hh:=562
+1020: setchar99 ("63) h:=8844594+291275=9135869, hh:=580
+1021: setchar114 ("72) h:=9135869+256683=9392552, hh:=596
+1022: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617
+1023: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629
+1024: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643
+1025: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675
+1026: setchar98 ("62) h:=10630466+364085=10994551, hh:=698
+1027: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710
+1028: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745
+1029: setchar97 ("61) h:=11722705+327680=12050385, hh:=765
+1030: setchar99 ("63) h:=12050385+291275=12341660, hh:=783
+1031: setchar114 ("72) h:=12341660+256683=12598343, hh:=799
+1032: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820
+1033: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832
+1034: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846
+1035: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878
+1036: setchar97 ("61) h:=13836257+327680=14163937, hh:=899
+1037: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911
+1038: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945
+1039: setchar97 ("61) h:=14892091+327680=15219771, hh:=966
+1040: setchar99 ("63) h:=15219771+291275=15511046, hh:=984
+1041: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000
+1042: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021
+1043: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033
+1044: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047
+1045: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079
+1046: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102
+1047: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114
+[MEANING macro:->a.macro:->b.macro:->a.macro:->b.]
+1048: pop
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+1049: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+1050: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+1054: eop
diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-pknj-sa.typ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-sa.typ
new file mode 100644
index 00000000000..9373f0bac64
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-sa.typ
@@ -0,0 +1,829 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 1061.
+maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1
+Font 1: min10 (JFM)---loaded at size 655360 DVI units
+Font 0: ec-lmr10---loaded at size 655360 DVI units
+
+42: beginning of page 37726
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+109: fntdef1 0: ec-lmr10
+133: fntnum0 current font is ec-lmr10
+134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114
+135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126
+136: w3 218453 h:=1984283+218453=2202736, hh:=140
+[A: ]
+140: set1 197("C5) h:=2202736+491520=2694256, hh:=171
+142: set1 191("BF) h:=2694256+491520=3185776, hh:=202
+144: w0 218453 h:=3185776+218453=3404229, hh:=216
+[ ]
+145: set1 197("C5) h:=3404229+491520=3895749, hh:=247
+147: set1 191("BF) h:=3895749+491520=4387269, hh:=278
+149: w0 218453 h:=4387269+218453=4605722, hh:=292
+[ ]
+150: fntdef1 1: min10
+171: fntnum1 current font is min10
+172: set2 17727("453F) type=0 h:=4605722+630598=5236320, hh:=332
+[䔿]
+175: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+176: y3 786432 v:=655360+786432=1441792, vv:=91
+180: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+181: push
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+182: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+185: pop
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+186: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+190: fntnum0 current font is ec-lmr10
+191: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+192: setchar109 ("6D) h:=958278+546111=1504389, hh:=96
+193: setchar101 ("65) h:=1504389+291275=1795664, hh:=114
+194: setchar97 ("61) h:=1795664+327680=2123344, hh:=135
+195: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158
+196: setchar105 ("69) h:=2487429+182043=2669472, hh:=170
+197: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193
+198: setchar103 ("67) h:=3033557+327680=3361237, hh:=214
+199: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226
+[\meaning.]
+200: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+201: y0 786432 v:=1441792+786432=2228224, vv:=141
+202: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+203: right3 1310720 h:=0+1310720=1310720, hh:=83
+207: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+208: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+209: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+210: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+211: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+212: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+213: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+214: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+215: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287
+216: setchar97 ("61) h:=4516494+327680=4844174, hh:=308
+217: setchar99 ("63) h:=4844174+291275=5135449, hh:=326
+218: setchar114 ("72) h:=5135449+256683=5392132, hh:=342
+219: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363
+220: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375
+221: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389
+222: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421
+[ macro:->macro:->]
+223: set1 197("C5) h:=6630046+491520=7121566, hh:=452
+225: set1 191("BF) h:=7121566+491520=7613086, hh:=483
+227: w3 218453 h:=7613086+218453=7831539, hh:=496
+[ ]
+231: set1 197("C5) h:=7831539+491520=8323059, hh:=527
+233: set1 191("BF) h:=8323059+491520=8814579, hh:=558
+235: w0 218453 h:=8814579+218453=9033032, hh:=572
+[ ]
+236: fntnum1 current font is min10
+237: set2 17727("453F) type=0 h:=9033032+630598=9663630, hh:=612
+[䔿]
+240: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+241: y0 786432 v:=2228224+786432=3014656, vv:=191
+242: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+243: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+247: fntnum0 current font is ec-lmr10
+248: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+249: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+250: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+251: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+252: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+253: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+254: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+255: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+[macro:->]
+256: set1 197("C5) h:=3970383+491520=4461903, hh:=283
+258: set1 191("BF) h:=4461903+491520=4953423, hh:=314
+260: w3 218453 h:=4953423+218453=5171876, hh:=328
+[ ]
+264: set1 197("C5) h:=5171876+491520=5663396, hh:=359
+266: set1 191("BF) h:=5663396+491520=6154916, hh:=390
+268: w0 218453 h:=6154916+218453=6373369, hh:=404
+[ ]
+269: fntnum1 current font is min10
+270: set2 17727("453F) type=0 h:=6373369+630598=7003967, hh:=444
+[䔿]
+273: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+274: y0 786432 v:=3014656+786432=3801088, vv:=241
+275: push
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+276: push
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+277: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+280: pop
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+281: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+285: fntnum0 current font is ec-lmr10
+286: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+287: setchar106 ("6A) h:=958278+200245=1158523, hh:=74
+288: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95
+289: setchar98 ("62) h:=1486203+364085=1850288, hh:=118
+290: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141
+291: setchar97 ("61) h:=2214373+327680=2542053, hh:=162
+292: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197
+293: setchar101 ("65) h:=3088164+291275=3379439, hh:=215
+294: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227
+[\jobname.]
+295: pop
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+296: y0 786432 v:=3801088+786432=4587520, vv:=291
+297: push
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+298: push
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+299: fntnum1 current font is min10
+300: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+303: pop
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+304: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+308: fntnum0 current font is ec-lmr10
+309: setchar111 ("6F) h:=630598+327680=958278, hh:=61
+310: setchar110 ("6E) h:=958278+364085=1322363, hh:=84
+311: setchar101 ("65) h:=1322363+291275=1613638, hh:=102
+312: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114
+313: setchar101 ("65) h:=1795681+291275=2086956, hh:=132
+314: setchar116 ("74) h:=2086956+254870=2341826, hh:=148
+315: setchar116 ("74) h:=2341826+254870=2596696, hh:=164
+316: setchar101 ("65) h:=2596696+291275=2887971, hh:=182
+317: setchar114 ("72) h:=2887971+256683=3144654, hh:=198
+318: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210
+[oneletter.]
+319: pop
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+320: y0 786432 v:=4587520+786432=5373952, vv:=340
+321: push
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+322: right3 1310720 h:=0+1310720=1310720, hh:=83
+326: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+327: set1 196("C4) h:=1638400+491520=2129920, hh:=135
+329: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147
+330: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168
+[.\]
+331: set1 197("C5) h:=2639643+491520=3131163, hh:=199
+333: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211
+334: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232
+[.\]
+335: set1 255("FF) h:=3640886+327680=3968566, hh:=253
+337: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265
+338: right3 291271 h:=4150609+291271=4441880, hh:=281
+[. ]
+342: set1 191("BF) h:=4441880+491520=4933400, hh:=312
+344: pop
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+345: y0 786432 v:=5373952+786432=6160384, vv:=390
+346: push
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+347: push
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+348: fntnum1 current font is min10
+349: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+352: pop
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+353: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+357: fntnum0 current font is ec-lmr10
+358: setchar99 ("63) h:=630598+291275=921873, hh:=58
+359: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+360: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+361: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+362: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+363: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+364: setchar49 ("31) h:=2709530+327680=3037210, hh:=192
+365: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname1.]
+366: pop
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+367: y0 786432 v:=6160384+786432=6946816, vv:=440
+368: push
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+369: right3 1310720 h:=0+1310720=1310720, hh:=83
+373: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+374: set1 197("C5) h:=1638400+491520=2129920, hh:=135
+376: set1 191("BF) h:=2129920+491520=2621440, hh:=166
+378: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187
+[\]
+379: set1 197("C5) h:=2949120+491520=3440640, hh:=218
+381: set1 191("BF) h:=3440640+491520=3932160, hh:=249
+383: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261
+384: w3 218453 h:=4114203+218453=4332656, hh:=274
+388: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295
+[, \]
+389: set1 197("C5) h:=4660336+491520=5151856, hh:=326
+391: set1 191("BF) h:=5151856+491520=5643376, hh:=357
+393: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369
+394: w0 218453 h:=5825419+218453=6043872, hh:=383
+395: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404
+[, \]
+396: fntnum1 current font is min10
+397: set2 17727("453F) type=0 h:=6371552+630598=7002150, hh:=444
+[䔿]
+400: pop
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+401: y0 786432 v:=6946816+786432=7733248, vv:=490
+402: push
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+403: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+407: fntnum0 current font is ec-lmr10
+408: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[\]
+409: fntnum1 current font is min10
+410: set2 9250("2422) type=0 h:=1638400+630598=2268998, hh:=144
+[␢]
+413: fntnum0 current font is ec-lmr10
+414: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176
+415: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208
+416: right3 218453 h:=3288474+218453=3506927, hh:=222
+420: setchar104 ("68) h:=3506927+364085=3871012, hh:=245
+421: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266
+422: setchar103 ("67) h:=4198692+327680=4526372, hh:=287
+423: setchar101 ("65) h:=4526372+291275=4817647, hh:=305
+424: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317
+[=> hoge,]
+425: pop
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+426: y0 786432 v:=7733248+786432=8519680, vv:=540
+427: push
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+428: right3 1310720 h:=0+1310720=1310720, hh:=83
+432: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+433: set1 227("E3) h:=1638400+327680=1966080, hh:=125
+435: set1 129("81) h:=1966080+491520=2457600, hh:=156
+437: w2 -18205 h:=2457600-18205=2439395, hh:=155
+440: set1 130("82) h:=2439395+473301=2912696, hh:=185
+442: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217
+443: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249
+444: right3 218453 h:=3932172+218453=4150625, hh:=263
+448: setchar112 ("70) h:=4150625+364085=4514710, hh:=286
+449: setchar105 ("69) h:=4514710+182043=4696753, hh:=298
+450: setchar121 ("79) h:=4696753+345898=5042651, hh:=320
+451: w0 -18205 h:=5042651-18205=5024446, hh:=319
+452: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340
+453: setchar44 ("2C) h:=5352126+182043=5534169, hh:=352
+[=> piyo,]
+454: pop
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+455: y0 786432 v:=8519680+786432=9306112, vv:=589
+456: push
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+457: right3 1310720 h:=0+1310720=1310720, hh:=83
+461: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+462: set1 227("E3) h:=1638400+327680=1966080, hh:=125
+464: set1 129("81) h:=1966080+491520=2457600, hh:=156
+466: w2 -18205 h:=2457600-18205=2439395, hh:=155
+469: set1 130("82) h:=2439395+473301=2912696, hh:=185
+471: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217
+472: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249
+473: right3 218453 h:=3932172+218453=4150625, hh:=263
+477: setchar112 ("70) h:=4150625+364085=4514710, hh:=286
+478: setchar105 ("69) h:=4514710+182043=4696753, hh:=298
+479: setchar121 ("79) h:=4696753+345898=5042651, hh:=320
+480: w0 -18205 h:=5042651-18205=5024446, hh:=319
+481: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340
+482: setchar46 ("2E) h:=5352126+182043=5534169, hh:=352
+[=> piyo.]
+483: pop
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+484: y0 786432 v:=9306112+786432=10092544, vv:=639
+485: push
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+486: push
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+487: fntnum1 current font is min10
+488: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+491: pop
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+492: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+496: fntnum0 current font is ec-lmr10
+497: setchar48 ("30) h:=630598+327680=958278, hh:=61
+498: setchar120 ("78) h:=958278+345898=1304176, hh:=83
+499: setchar70 ("46) h:=1304176+427818=1731994, hh:=110
+500: setchar70 ("46) h:=1731994+427818=2159812, hh:=137
+501: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149
+[0xFF.]
+502: pop
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+503: y0 786432 v:=10092544+786432=10878976, vv:=689
+504: push
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+505: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+509: fntnum1 current font is min10
+510: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[␢]
+513: fntnum0 current font is ec-lmr10
+514: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+515: w3 218453 h:=2123361+218453=2341814, hh:=148
+519: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+520: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+521: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+523: set1 197("C5) h:=3252044+491520=3743564, hh:=237
+525: set1 255("FF) h:=3743564+327680=4071244, hh:=258
+527: set1 191("BF) h:=4071244+491520=4562764, hh:=289
+529: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301
+530: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336
+531: setchar97 ("61) h:=5290918+327680=5618598, hh:=357
+532: setchar99 ("63) h:=5618598+291275=5909873, hh:=375
+533: setchar114 ("72) h:=5909873+256683=6166556, hh:=391
+534: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412
+535: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424
+536: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438
+537: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470
+[:macro:->]
+538: fntnum1 current font is min10
+539: set2 9250("2422) type=0 h:=7404470+630598=8035068, hh:=510
+[␢]
+542: fntnum0 current font is ec-lmr10
+543: setchar41 ("29) h:=8035068+254870=8289938, hh:=526
+544: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538
+545: w0 218453 h:=8471981+218453=8690434, hh:=550
+546: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571
+[), \]
+547: set1 255("FF) h:=9018114+327680=9345794, hh:=592
+549: set1 197("C5) h:=9345794+491520=9837314, hh:=623
+551: set1 255("FF) h:=9837314+327680=10164994, hh:=644
+553: set1 191("BF) h:=10164994+491520=10656514, hh:=675
+555: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687
+556: w0 218453 h:=10838557+218453=11057010, hh:=700
+557: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735
+558: setchar97 ("61) h:=11603121+327680=11930801, hh:=756
+559: setchar99 ("63) h:=11930801+291275=12222076, hh:=774
+560: setchar114 ("72) h:=12222076+256683=12478759, hh:=790
+561: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811
+562: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823
+563: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837
+564: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869
+565: setchar40 ("28) h:=13716673+254870=13971543, hh:=885
+566: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906
+[, macro:->(\]
+567: set1 255("FF) h:=14299223+327680=14626903, hh:=927
+569: set1 197("C5) h:=14626903+491520=15118423, hh:=958
+571: set1 255("FF) h:=15118423+327680=15446103, hh:=979
+573: set1 191("BF) h:=15446103+491520=15937623, hh:=1010
+575: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022
+576: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057
+577: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078
+578: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096
+579: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112
+580: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133
+581: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145
+582: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159
+583: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191
+[:macro:->]
+584: fntnum1 current font is min10
+585: set2 9250("2422) type=0 h:=18779329+630598=19409927, hh:=1231
+[␢]
+588: fntnum0 current font is ec-lmr10
+589: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247
+590: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259
+[).]
+591: pop
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+592: y0 786432 v:=10878976+786432=11665408, vv:=739
+593: push
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+594: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+598: fntnum1 current font is min10
+599: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123
+[␤]
+602: fntnum0 current font is ec-lmr10
+603: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+604: w3 218453 h:=2123361+218453=2341814, hh:=148
+608: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+609: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+610: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+612: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218
+613: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253
+614: setchar97 ("61) h:=3980198+327680=4307878, hh:=274
+615: setchar99 ("63) h:=4307878+291275=4599153, hh:=292
+616: setchar114 ("72) h:=4599153+256683=4855836, hh:=308
+617: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329
+618: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341
+619: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355
+620: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387
+[:macro:->]
+621: fntnum1 current font is min10
+622: set2 9252("2424) type=0 h:=6093750+630598=6724348, hh:=427
+[␤]
+625: fntnum0 current font is ec-lmr10
+626: setchar41 ("29) h:=6724348+254870=6979218, hh:=443
+627: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455
+628: w0 218453 h:=7161261+218453=7379714, hh:=467
+629: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488
+[), \]
+630: set1 255("FF) h:=7707394+327680=8035074, hh:=509
+632: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521
+633: w0 218453 h:=8217117+218453=8435570, hh:=534
+634: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569
+635: setchar97 ("61) h:=8981681+327680=9309361, hh:=590
+636: setchar99 ("63) h:=9309361+291275=9600636, hh:=608
+637: setchar114 ("72) h:=9600636+256683=9857319, hh:=624
+638: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645
+639: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657
+640: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671
+641: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703
+642: setchar40 ("28) h:=11095233+254870=11350103, hh:=719
+643: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740
+[, macro:->(\]
+644: set1 255("FF) h:=11677783+327680=12005463, hh:=761
+646: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773
+647: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808
+648: setchar97 ("61) h:=12733617+327680=13061297, hh:=829
+649: setchar99 ("63) h:=13061297+291275=13352572, hh:=847
+650: setchar114 ("72) h:=13352572+256683=13609255, hh:=863
+651: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884
+652: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896
+653: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910
+654: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942
+[:macro:->]
+655: fntnum1 current font is min10
+656: set2 9252("2424) type=0 h:=14847169+630598=15477767, hh:=982
+[␤]
+659: fntnum0 current font is ec-lmr10
+660: setchar41 ("29) h:=15477767+254870=15732637, hh:=998
+661: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010
+[).]
+662: pop
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+663: y0 786432 v:=11665408+786432=12451840, vv:=789
+664: push
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+665: push
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+666: fntnum1 current font is min10
+667: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+670: pop
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+671: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+675: fntnum0 current font is ec-lmr10
+676: setchar99 ("63) h:=630598+291275=921873, hh:=58
+677: setchar111 ("6F) h:=921873+327680=1249553, hh:=79
+678: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102
+679: right2 -18205 h:=1613638-18205=1595433, hh:=101
+682: setchar116 ("74) h:=1595433+254870=1850303, hh:=117
+683: setchar101 ("65) h:=1850303+291275=2141578, hh:=135
+684: setchar120 ("78) h:=2141578+345898=2487476, hh:=157
+685: setchar116 ("74) h:=2487476+254870=2742346, hh:=173
+686: setchar115 ("73) h:=2742346+258506=3000852, hh:=189
+687: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201
+[contexts.]
+688: pop
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+689: y0 786432 v:=12451840+786432=13238272, vv:=839
+690: push
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+691: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+695: fntnum1 current font is min10
+696: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[␢]
+699: fntnum0 current font is ec-lmr10
+700: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+702: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+704: w3 218453 h:=2924358+218453=3142811, hh:=199
+708: setchar97 ("61) h:=3142811+327680=3470491, hh:=220
+[ a]
+709: set1 197("C5) h:=3470491+491520=3962011, hh:=251
+711: set1 191("BF) h:=3962011+491520=4453531, hh:=282
+713: w0 218453 h:=4453531+218453=4671984, hh:=296
+[ ]
+714: set1 197("C5) h:=4671984+491520=5163504, hh:=327
+716: set1 191("BF) h:=5163504+491520=5655024, hh:=358
+718: w0 218453 h:=5655024+218453=5873477, hh:=372
+[ ]
+719: fntnum1 current font is min10
+720: set2 17727("453F) type=0 h:=5873477+630598=6504075, hh:=412
+723: w0 218453 h:=6504075+218453=6722528, hh:=426
+[䔿 ]
+724: fntnum0 current font is ec-lmr10
+725: set1 197("C5) h:=6722528+491520=7214048, hh:=457
+727: set1 191("BF) h:=7214048+491520=7705568, hh:=488
+729: w0 218453 h:=7705568+218453=7924021, hh:=502
+[ ]
+730: set1 197("C5) h:=7924021+491520=8415541, hh:=533
+732: set1 191("BF) h:=8415541+491520=8907061, hh:=564
+734: w0 218453 h:=8907061+218453=9125514, hh:=578
+[ ]
+735: fntnum1 current font is min10
+736: set2 17727("453F) type=0 h:=9125514+630598=9756112, hh:=618
+739: x3 436906 h:=9756112+436906=10193018, hh:=646
+[䔿 ]
+743: fntnum0 current font is ec-lmr10
+744: set1 197("C5) h:=10193018+491520=10684538, hh:=677
+746: set1 191("BF) h:=10684538+491520=11176058, hh:=708
+748: w0 218453 h:=11176058+218453=11394511, hh:=722
+[ ]
+749: fntnum1 current font is min10
+750: set2 17727("453F) type=0 h:=11394511+630598=12025109, hh:=762
+753: x0 436906 h:=12025109+436906=12462015, hh:=789
+754: set2 9252("2424) type=0 h:=12462015+630598=13092613, hh:=829
+[䔿 ␤]
+757: fntnum0 current font is ec-lmr10
+758: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864
+759: setchar97 ("61) h:=13638724+327680=13966404, hh:=885
+760: setchar99 ("63) h:=13966404+291275=14257679, hh:=903
+761: setchar114 ("72) h:=14257679+256683=14514362, hh:=919
+762: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940
+763: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952
+764: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966
+765: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998
+[macro:->]
+766: set1 197("C5) h:=15752276+491520=16243796, hh:=1029
+768: set1 191("BF) h:=16243796+491520=16735316, hh:=1060
+770: w0 218453 h:=16735316+218453=16953769, hh:=1074
+[ ]
+771: set1 197("C5) h:=16953769+491520=17445289, hh:=1105
+773: set1 191("BF) h:=17445289+491520=17936809, hh:=1136
+775: w0 218453 h:=17936809+218453=18155262, hh:=1150
+[ ]
+776: fntnum1 current font is min10
+777: set2 17727("453F) type=0 h:=18155262+630598=18785860, hh:=1190
+[䔿]
+780: pop
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+781: y0 786432 v:=13238272+786432=14024704, vv:=888
+782: push
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+783: right3 1310720 h:=0+1310720=1310720, hh:=83
+787: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[ ␢]
+790: fntnum0 current font is ec-lmr10
+791: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+793: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+795: w3 218453 h:=2924358+218453=3142811, hh:=199
+[ ]
+799: set1 197("C5) h:=3142811+491520=3634331, hh:=230
+801: set1 191("BF) h:=3634331+491520=4125851, hh:=261
+803: fntnum1 current font is min10
+804: set2 17727("453F) type=0 h:=4125851+630598=4756449, hh:=301
+[䔿]
+807: fntnum0 current font is ec-lmr10
+808: set1 197("C5) h:=4756449+491520=5247969, hh:=332
+810: set1 191("BF) h:=5247969+491520=5739489, hh:=363
+812: w0 218453 h:=5739489+218453=5957942, hh:=377
+813: setchar97 ("61) h:=5957942+327680=6285622, hh:=398
+[ a]
+814: set1 197("C5) h:=6285622+491520=6777142, hh:=429
+816: set1 191("BF) h:=6777142+491520=7268662, hh:=460
+818: w0 218453 h:=7268662+218453=7487115, hh:=474
+[ ]
+819: set1 197("C5) h:=7487115+491520=7978635, hh:=505
+821: set1 191("BF) h:=7978635+491520=8470155, hh:=536
+823: w0 218453 h:=8470155+218453=8688608, hh:=550
+[ ]
+824: fntnum1 current font is min10
+825: set2 17727("453F) type=0 h:=8688608+630598=9319206, hh:=590
+828: w0 218453 h:=9319206+218453=9537659, hh:=604
+[䔿 ]
+829: fntnum0 current font is ec-lmr10
+830: set1 197("C5) h:=9537659+491520=10029179, hh:=635
+832: set1 191("BF) h:=10029179+491520=10520699, hh:=666
+834: w0 218453 h:=10520699+218453=10739152, hh:=680
+[ ]
+835: set1 197("C5) h:=10739152+491520=11230672, hh:=711
+837: set1 191("BF) h:=11230672+491520=11722192, hh:=742
+839: w0 218453 h:=11722192+218453=11940645, hh:=756
+[ ]
+840: fntnum1 current font is min10
+841: set2 17727("453F) type=0 h:=11940645+630598=12571243, hh:=796
+844: right3 436906 h:=12571243+436906=13008149, hh:=824
+[䔿 ]
+848: fntnum0 current font is ec-lmr10
+849: set1 197("C5) h:=13008149+491520=13499669, hh:=855
+851: set1 191("BF) h:=13499669+491520=13991189, hh:=886
+853: w0 218453 h:=13991189+218453=14209642, hh:=900
+[ ]
+854: fntnum1 current font is min10
+855: set2 17727("453F) type=0 h:=14209642+630598=14840240, hh:=940
+858: w0 218453 h:=14840240+218453=15058693, hh:=954
+859: set2 9252("2424) type=0 h:=15058693+630598=15689291, hh:=994
+[䔿 ␤]
+862: fntnum0 current font is ec-lmr10
+863: set1 255("FF) h:=15689291+327680=16016971, hh:=1015
+865: pop
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+866: y0 786432 v:=14024704+786432=14811136, vv:=938
+867: push
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+868: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+872: fntnum1 current font is min10
+873: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123
+[␤]
+876: pop
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+877: y0 786432 v:=14811136+786432=15597568, vv:=988
+878: push
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+879: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+883: fntnum0 current font is ec-lmr10
+884: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+885: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+886: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+887: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+888: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+889: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+890: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+891: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+892: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+893: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[.a...c.b..]
+894: pop
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+895: y0 786432 v:=15597568+786432=16384000, vv:=1038
+896: push
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+897: right3 1310720 h:=0+1310720=1310720, hh:=83
+901: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+902: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+903: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+904: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+905: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+906: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+907: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+908: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+909: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+910: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[ .a...c.b..]
+911: pop
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+912: y0 786432 v:=16384000+786432=17170432, vv:=1088
+913: push
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+914: push
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+915: fntnum1 current font is min10
+916: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+919: pop
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+920: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+924: fntnum0 current font is ec-lmr10
+925: setchar99 ("63) h:=630598+291275=921873, hh:=58
+926: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+927: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+928: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+929: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+930: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+931: setchar50 ("32) h:=2709530+327680=3037210, hh:=192
+932: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname2.]
+933: pop
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+934: y0 786432 v:=17170432+786432=17956864, vv:=1137
+935: push
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+936: right3 1310720 h:=0+1310720=1310720, hh:=83
+940: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+941: setchar72 ("48) h:=1674805+491520=2166325, hh:=137
+942: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169
+943: right2 -18205 h:=2676063-18205=2657858, hh:=168
+946: setchar87 ("57) h:=2657858+673578=3331436, hh:=211
+947: right3 218453 h:=3331436+218453=3549889, hh:=225
+951: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237
+952: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249
+953: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261
+[ SHOW ...]
+954: pop
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+955: y0 786432 v:=17956864+786432=18743296, vv:=1187
+956: push
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+957: right3 1310720 h:=0+1310720=1310720, hh:=83
+961: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+962: setchar84 ("54) h:=1674805+473301=2148106, hh:=136
+963: setchar82 ("52) h:=2148106+482410=2630516, hh:=167
+964: setchar73 ("49) h:=2630516+236650=2867166, hh:=182
+965: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213
+966: setchar71 ("47) h:=3358686+514261=3872947, hh:=246
+967: right3 218453 h:=3872947+218453=4091400, hh:=259
+971: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280
+[ STRING \]
+972: set1 197("C5) h:=4419080+491520=4910600, hh:=311
+974: set1 191("BF) h:=4910600+491520=5402120, hh:=342
+976: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354
+977: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375
+[.\]
+978: fntnum1 current font is min10
+979: set2 17727("453F) type=0 h:=5911843+630598=6542441, hh:=415
+[䔿]
+982: fntnum0 current font is ec-lmr10
+983: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427
+984: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448
+[.\]
+985: set1 197("C5) h:=7052164+491520=7543684, hh:=479
+987: set1 191("BF) h:=7543684+491520=8035204, hh:=510
+989: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522
+990: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543
+[.\]
+991: fntnum1 current font is min10
+992: set2 17727("453F) type=0 h:=8544927+630598=9175525, hh:=583
+[䔿]
+995: pop
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+996: y0 786432 v:=18743296+786432=19529728, vv:=1237
+997: push
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+998: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+1002: fntnum0 current font is ec-lmr10
+1003: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121
+1004: setchar69 ("45) h:=1911488+446005=2357493, hh:=149
+1005: setchar65 ("41) h:=2357493+491520=2849013, hh:=180
+1006: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211
+1007: setchar73 ("49) h:=3340533+236650=3577183, hh:=226
+1008: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257
+1009: setchar71 ("47) h:=4068703+514261=4582964, hh:=290
+1010: right3 218453 h:=4582964+218453=4801417, hh:=304
+1014: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339
+1015: setchar97 ("61) h:=5347528+327680=5675208, hh:=360
+1016: setchar99 ("63) h:=5675208+291275=5966483, hh:=378
+1017: setchar114 ("72) h:=5966483+256683=6223166, hh:=394
+1018: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415
+1019: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427
+1020: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441
+1021: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473
+1022: setchar97 ("61) h:=7461080+327680=7788760, hh:=494
+1023: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506
+1024: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541
+1025: setchar97 ("61) h:=8516914+327680=8844594, hh:=562
+1026: setchar99 ("63) h:=8844594+291275=9135869, hh:=580
+1027: setchar114 ("72) h:=9135869+256683=9392552, hh:=596
+1028: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617
+1029: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629
+1030: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643
+1031: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675
+1032: setchar98 ("62) h:=10630466+364085=10994551, hh:=698
+1033: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710
+1034: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745
+1035: setchar97 ("61) h:=11722705+327680=12050385, hh:=765
+1036: setchar99 ("63) h:=12050385+291275=12341660, hh:=783
+1037: setchar114 ("72) h:=12341660+256683=12598343, hh:=799
+1038: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820
+1039: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832
+1040: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846
+1041: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878
+1042: setchar97 ("61) h:=13836257+327680=14163937, hh:=899
+1043: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911
+1044: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945
+1045: setchar97 ("61) h:=14892091+327680=15219771, hh:=966
+1046: setchar99 ("63) h:=15219771+291275=15511046, hh:=984
+1047: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000
+1048: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021
+1049: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033
+1050: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047
+1051: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079
+1052: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102
+1053: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114
+[MEANING macro:->a.macro:->b.macro:->a.macro:->b.]
+1054: pop
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+1055: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+1056: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+1060: eop
diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ua.typ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ua.typ
new file mode 100644
index 00000000000..d126d4c505e
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ua.typ
@@ -0,0 +1,829 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 1062.
+maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1
+Font 1: umin10 (JFM)---loaded at size 655360 DVI units
+Font 0: ec-lmr10---loaded at size 655360 DVI units
+
+42: beginning of page 39003
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+109: fntdef1 0: ec-lmr10
+133: fntnum0 current font is ec-lmr10
+134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114
+135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126
+136: w3 218453 h:=1984283+218453=2202736, hh:=140
+[A: ]
+140: set1 197("C5) h:=2202736+491520=2694256, hh:=171
+142: set1 191("BF) h:=2694256+491520=3185776, hh:=202
+144: w0 218453 h:=3185776+218453=3404229, hh:=216
+[ ]
+145: set1 197("C5) h:=3404229+491520=3895749, hh:=247
+147: set1 191("BF) h:=3895749+491520=4387269, hh:=278
+149: w0 218453 h:=4387269+218453=4605722, hh:=292
+[ ]
+150: fntdef1 1: umin10
+172: fntnum1 current font is umin10
+173: set2 39003("985B) type=0 h:=4605722+630598=5236320, hh:=332
+[顛]
+176: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+177: y3 786432 v:=655360+786432=1441792, vv:=91
+181: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+182: push
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+183: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+186: pop
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+187: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+191: fntnum0 current font is ec-lmr10
+192: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+193: setchar109 ("6D) h:=958278+546111=1504389, hh:=96
+194: setchar101 ("65) h:=1504389+291275=1795664, hh:=114
+195: setchar97 ("61) h:=1795664+327680=2123344, hh:=135
+196: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158
+197: setchar105 ("69) h:=2487429+182043=2669472, hh:=170
+198: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193
+199: setchar103 ("67) h:=3033557+327680=3361237, hh:=214
+200: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226
+[\meaning.]
+201: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+202: y0 786432 v:=1441792+786432=2228224, vv:=141
+203: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+204: right3 1310720 h:=0+1310720=1310720, hh:=83
+208: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+209: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+210: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+211: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+212: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+213: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+214: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+215: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+216: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287
+217: setchar97 ("61) h:=4516494+327680=4844174, hh:=308
+218: setchar99 ("63) h:=4844174+291275=5135449, hh:=326
+219: setchar114 ("72) h:=5135449+256683=5392132, hh:=342
+220: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363
+221: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375
+222: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389
+223: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421
+[ macro:->macro:->]
+224: set1 197("C5) h:=6630046+491520=7121566, hh:=452
+226: set1 191("BF) h:=7121566+491520=7613086, hh:=483
+228: w3 218453 h:=7613086+218453=7831539, hh:=496
+[ ]
+232: set1 197("C5) h:=7831539+491520=8323059, hh:=527
+234: set1 191("BF) h:=8323059+491520=8814579, hh:=558
+236: w0 218453 h:=8814579+218453=9033032, hh:=572
+[ ]
+237: fntnum1 current font is umin10
+238: set2 39003("985B) type=0 h:=9033032+630598=9663630, hh:=612
+[顛]
+241: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+242: y0 786432 v:=2228224+786432=3014656, vv:=191
+243: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+244: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+248: fntnum0 current font is ec-lmr10
+249: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+250: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+251: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+252: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+253: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+254: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+255: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+256: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+[macro:->]
+257: set1 197("C5) h:=3970383+491520=4461903, hh:=283
+259: set1 191("BF) h:=4461903+491520=4953423, hh:=314
+261: w3 218453 h:=4953423+218453=5171876, hh:=328
+[ ]
+265: set1 197("C5) h:=5171876+491520=5663396, hh:=359
+267: set1 191("BF) h:=5663396+491520=6154916, hh:=390
+269: w0 218453 h:=6154916+218453=6373369, hh:=404
+[ ]
+270: fntnum1 current font is umin10
+271: set2 39003("985B) type=0 h:=6373369+630598=7003967, hh:=444
+[顛]
+274: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+275: y0 786432 v:=3014656+786432=3801088, vv:=241
+276: push
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+277: push
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+278: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+281: pop
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+282: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+286: fntnum0 current font is ec-lmr10
+287: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+288: setchar106 ("6A) h:=958278+200245=1158523, hh:=74
+289: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95
+290: setchar98 ("62) h:=1486203+364085=1850288, hh:=118
+291: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141
+292: setchar97 ("61) h:=2214373+327680=2542053, hh:=162
+293: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197
+294: setchar101 ("65) h:=3088164+291275=3379439, hh:=215
+295: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227
+[\jobname.]
+296: pop
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+297: y0 786432 v:=3801088+786432=4587520, vv:=291
+298: push
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+299: push
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+300: fntnum1 current font is umin10
+301: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+304: pop
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+305: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+309: fntnum0 current font is ec-lmr10
+310: setchar111 ("6F) h:=630598+327680=958278, hh:=61
+311: setchar110 ("6E) h:=958278+364085=1322363, hh:=84
+312: setchar101 ("65) h:=1322363+291275=1613638, hh:=102
+313: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114
+314: setchar101 ("65) h:=1795681+291275=2086956, hh:=132
+315: setchar116 ("74) h:=2086956+254870=2341826, hh:=148
+316: setchar116 ("74) h:=2341826+254870=2596696, hh:=164
+317: setchar101 ("65) h:=2596696+291275=2887971, hh:=182
+318: setchar114 ("72) h:=2887971+256683=3144654, hh:=198
+319: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210
+[oneletter.]
+320: pop
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+321: y0 786432 v:=4587520+786432=5373952, vv:=340
+322: push
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+323: right3 1310720 h:=0+1310720=1310720, hh:=83
+327: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+328: set1 196("C4) h:=1638400+491520=2129920, hh:=135
+330: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147
+331: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168
+[.\]
+332: set1 197("C5) h:=2639643+491520=3131163, hh:=199
+334: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211
+335: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232
+[.\]
+336: set1 255("FF) h:=3640886+327680=3968566, hh:=253
+338: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265
+339: right3 291271 h:=4150609+291271=4441880, hh:=281
+[. ]
+343: set1 191("BF) h:=4441880+491520=4933400, hh:=312
+345: pop
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+346: y0 786432 v:=5373952+786432=6160384, vv:=390
+347: push
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+348: push
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+349: fntnum1 current font is umin10
+350: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+353: pop
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+354: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+358: fntnum0 current font is ec-lmr10
+359: setchar99 ("63) h:=630598+291275=921873, hh:=58
+360: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+361: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+362: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+363: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+364: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+365: setchar49 ("31) h:=2709530+327680=3037210, hh:=192
+366: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname1.]
+367: pop
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+368: y0 786432 v:=6160384+786432=6946816, vv:=440
+369: push
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+370: right3 1310720 h:=0+1310720=1310720, hh:=83
+374: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+375: set1 197("C5) h:=1638400+491520=2129920, hh:=135
+377: set1 191("BF) h:=2129920+491520=2621440, hh:=166
+379: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187
+[\]
+380: set1 197("C5) h:=2949120+491520=3440640, hh:=218
+382: set1 191("BF) h:=3440640+491520=3932160, hh:=249
+384: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261
+385: w3 218453 h:=4114203+218453=4332656, hh:=274
+389: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295
+[, \]
+390: set1 197("C5) h:=4660336+491520=5151856, hh:=326
+392: set1 191("BF) h:=5151856+491520=5643376, hh:=357
+394: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369
+395: w0 218453 h:=5825419+218453=6043872, hh:=383
+396: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404
+[, \]
+397: fntnum1 current font is umin10
+398: set2 39003("985B) type=0 h:=6371552+630598=7002150, hh:=444
+[顛]
+401: pop
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+402: y0 786432 v:=6946816+786432=7733248, vv:=490
+403: push
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+404: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+408: fntnum0 current font is ec-lmr10
+409: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[\]
+410: fntnum1 current font is umin10
+411: set2 12354("3042) type=0 h:=1638400+630598=2268998, hh:=144
+[あ]
+414: fntnum0 current font is ec-lmr10
+415: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176
+416: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208
+417: right3 218453 h:=3288474+218453=3506927, hh:=222
+421: setchar104 ("68) h:=3506927+364085=3871012, hh:=245
+422: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266
+423: setchar103 ("67) h:=4198692+327680=4526372, hh:=287
+424: setchar101 ("65) h:=4526372+291275=4817647, hh:=305
+425: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317
+[=> hoge,]
+426: pop
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+427: y0 786432 v:=7733248+786432=8519680, vv:=540
+428: push
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+429: right3 1310720 h:=0+1310720=1310720, hh:=83
+433: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+434: set1 227("E3) h:=1638400+327680=1966080, hh:=125
+436: set1 129("81) h:=1966080+491520=2457600, hh:=156
+438: w2 -18205 h:=2457600-18205=2439395, hh:=155
+441: set1 130("82) h:=2439395+473301=2912696, hh:=185
+443: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217
+444: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249
+445: right3 218453 h:=3932172+218453=4150625, hh:=263
+449: setchar112 ("70) h:=4150625+364085=4514710, hh:=286
+450: setchar105 ("69) h:=4514710+182043=4696753, hh:=298
+451: setchar121 ("79) h:=4696753+345898=5042651, hh:=320
+452: w0 -18205 h:=5042651-18205=5024446, hh:=319
+453: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340
+454: setchar44 ("2C) h:=5352126+182043=5534169, hh:=352
+[=> piyo,]
+455: pop
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+456: y0 786432 v:=8519680+786432=9306112, vv:=589
+457: push
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+458: right3 1310720 h:=0+1310720=1310720, hh:=83
+462: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+463: set1 227("E3) h:=1638400+327680=1966080, hh:=125
+465: set1 129("81) h:=1966080+491520=2457600, hh:=156
+467: w2 -18205 h:=2457600-18205=2439395, hh:=155
+470: set1 130("82) h:=2439395+473301=2912696, hh:=185
+472: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217
+473: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249
+474: right3 218453 h:=3932172+218453=4150625, hh:=263
+478: setchar112 ("70) h:=4150625+364085=4514710, hh:=286
+479: setchar105 ("69) h:=4514710+182043=4696753, hh:=298
+480: setchar121 ("79) h:=4696753+345898=5042651, hh:=320
+481: w0 -18205 h:=5042651-18205=5024446, hh:=319
+482: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340
+483: setchar46 ("2E) h:=5352126+182043=5534169, hh:=352
+[=> piyo.]
+484: pop
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+485: y0 786432 v:=9306112+786432=10092544, vv:=639
+486: push
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+487: push
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+488: fntnum1 current font is umin10
+489: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+492: pop
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+493: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+497: fntnum0 current font is ec-lmr10
+498: setchar48 ("30) h:=630598+327680=958278, hh:=61
+499: setchar120 ("78) h:=958278+345898=1304176, hh:=83
+500: setchar70 ("46) h:=1304176+427818=1731994, hh:=110
+501: setchar70 ("46) h:=1731994+427818=2159812, hh:=137
+502: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149
+[0xFF.]
+503: pop
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+504: y0 786432 v:=10092544+786432=10878976, vv:=689
+505: push
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+506: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+510: fntnum1 current font is umin10
+511: set2 12354("3042) type=0 h:=1310720+630598=1941318, hh:=123
+[あ]
+514: fntnum0 current font is ec-lmr10
+515: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+516: w3 218453 h:=2123361+218453=2341814, hh:=148
+520: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+521: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+522: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+524: set1 197("C5) h:=3252044+491520=3743564, hh:=237
+526: set1 255("FF) h:=3743564+327680=4071244, hh:=258
+528: set1 191("BF) h:=4071244+491520=4562764, hh:=289
+530: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301
+531: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336
+532: setchar97 ("61) h:=5290918+327680=5618598, hh:=357
+533: setchar99 ("63) h:=5618598+291275=5909873, hh:=375
+534: setchar114 ("72) h:=5909873+256683=6166556, hh:=391
+535: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412
+536: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424
+537: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438
+538: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470
+[:macro:->]
+539: fntnum1 current font is umin10
+540: set2 12354("3042) type=0 h:=7404470+630598=8035068, hh:=510
+[あ]
+543: fntnum0 current font is ec-lmr10
+544: setchar41 ("29) h:=8035068+254870=8289938, hh:=526
+545: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538
+546: w0 218453 h:=8471981+218453=8690434, hh:=550
+547: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571
+[), \]
+548: set1 255("FF) h:=9018114+327680=9345794, hh:=592
+550: set1 197("C5) h:=9345794+491520=9837314, hh:=623
+552: set1 255("FF) h:=9837314+327680=10164994, hh:=644
+554: set1 191("BF) h:=10164994+491520=10656514, hh:=675
+556: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687
+557: w0 218453 h:=10838557+218453=11057010, hh:=700
+558: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735
+559: setchar97 ("61) h:=11603121+327680=11930801, hh:=756
+560: setchar99 ("63) h:=11930801+291275=12222076, hh:=774
+561: setchar114 ("72) h:=12222076+256683=12478759, hh:=790
+562: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811
+563: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823
+564: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837
+565: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869
+566: setchar40 ("28) h:=13716673+254870=13971543, hh:=885
+567: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906
+[, macro:->(\]
+568: set1 255("FF) h:=14299223+327680=14626903, hh:=927
+570: set1 197("C5) h:=14626903+491520=15118423, hh:=958
+572: set1 255("FF) h:=15118423+327680=15446103, hh:=979
+574: set1 191("BF) h:=15446103+491520=15937623, hh:=1010
+576: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022
+577: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057
+578: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078
+579: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096
+580: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112
+581: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133
+582: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145
+583: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159
+584: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191
+[:macro:->]
+585: fntnum1 current font is umin10
+586: set2 12354("3042) type=0 h:=18779329+630598=19409927, hh:=1231
+[あ]
+589: fntnum0 current font is ec-lmr10
+590: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247
+591: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259
+[).]
+592: pop
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+593: y0 786432 v:=10878976+786432=11665408, vv:=739
+594: push
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+595: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+599: fntnum1 current font is umin10
+600: set2 12356("3044) type=0 h:=1310720+630598=1941318, hh:=123
+[い]
+603: fntnum0 current font is ec-lmr10
+604: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+605: w3 218453 h:=2123361+218453=2341814, hh:=148
+609: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+610: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+611: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+613: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218
+614: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253
+615: setchar97 ("61) h:=3980198+327680=4307878, hh:=274
+616: setchar99 ("63) h:=4307878+291275=4599153, hh:=292
+617: setchar114 ("72) h:=4599153+256683=4855836, hh:=308
+618: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329
+619: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341
+620: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355
+621: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387
+[:macro:->]
+622: fntnum1 current font is umin10
+623: set2 12356("3044) type=0 h:=6093750+630598=6724348, hh:=427
+[い]
+626: fntnum0 current font is ec-lmr10
+627: setchar41 ("29) h:=6724348+254870=6979218, hh:=443
+628: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455
+629: w0 218453 h:=7161261+218453=7379714, hh:=467
+630: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488
+[), \]
+631: set1 255("FF) h:=7707394+327680=8035074, hh:=509
+633: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521
+634: w0 218453 h:=8217117+218453=8435570, hh:=534
+635: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569
+636: setchar97 ("61) h:=8981681+327680=9309361, hh:=590
+637: setchar99 ("63) h:=9309361+291275=9600636, hh:=608
+638: setchar114 ("72) h:=9600636+256683=9857319, hh:=624
+639: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645
+640: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657
+641: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671
+642: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703
+643: setchar40 ("28) h:=11095233+254870=11350103, hh:=719
+644: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740
+[, macro:->(\]
+645: set1 255("FF) h:=11677783+327680=12005463, hh:=761
+647: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773
+648: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808
+649: setchar97 ("61) h:=12733617+327680=13061297, hh:=829
+650: setchar99 ("63) h:=13061297+291275=13352572, hh:=847
+651: setchar114 ("72) h:=13352572+256683=13609255, hh:=863
+652: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884
+653: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896
+654: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910
+655: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942
+[:macro:->]
+656: fntnum1 current font is umin10
+657: set2 12356("3044) type=0 h:=14847169+630598=15477767, hh:=982
+[い]
+660: fntnum0 current font is ec-lmr10
+661: setchar41 ("29) h:=15477767+254870=15732637, hh:=998
+662: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010
+[).]
+663: pop
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+664: y0 786432 v:=11665408+786432=12451840, vv:=789
+665: push
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+666: push
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+667: fntnum1 current font is umin10
+668: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+671: pop
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+672: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+676: fntnum0 current font is ec-lmr10
+677: setchar99 ("63) h:=630598+291275=921873, hh:=58
+678: setchar111 ("6F) h:=921873+327680=1249553, hh:=79
+679: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102
+680: right2 -18205 h:=1613638-18205=1595433, hh:=101
+683: setchar116 ("74) h:=1595433+254870=1850303, hh:=117
+684: setchar101 ("65) h:=1850303+291275=2141578, hh:=135
+685: setchar120 ("78) h:=2141578+345898=2487476, hh:=157
+686: setchar116 ("74) h:=2487476+254870=2742346, hh:=173
+687: setchar115 ("73) h:=2742346+258506=3000852, hh:=189
+688: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201
+[contexts.]
+689: pop
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+690: y0 786432 v:=12451840+786432=13238272, vv:=839
+691: push
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+692: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+696: fntnum1 current font is umin10
+697: set2 12354("3042) type=0 h:=1310720+630598=1941318, hh:=123
+[あ]
+700: fntnum0 current font is ec-lmr10
+701: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+703: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+705: w3 218453 h:=2924358+218453=3142811, hh:=199
+709: setchar97 ("61) h:=3142811+327680=3470491, hh:=220
+[ a]
+710: set1 197("C5) h:=3470491+491520=3962011, hh:=251
+712: set1 191("BF) h:=3962011+491520=4453531, hh:=282
+714: w0 218453 h:=4453531+218453=4671984, hh:=296
+[ ]
+715: set1 197("C5) h:=4671984+491520=5163504, hh:=327
+717: set1 191("BF) h:=5163504+491520=5655024, hh:=358
+719: w0 218453 h:=5655024+218453=5873477, hh:=372
+[ ]
+720: fntnum1 current font is umin10
+721: set2 39003("985B) type=0 h:=5873477+630598=6504075, hh:=412
+724: w0 218453 h:=6504075+218453=6722528, hh:=426
+[顛 ]
+725: fntnum0 current font is ec-lmr10
+726: set1 197("C5) h:=6722528+491520=7214048, hh:=457
+728: set1 191("BF) h:=7214048+491520=7705568, hh:=488
+730: w0 218453 h:=7705568+218453=7924021, hh:=502
+[ ]
+731: set1 197("C5) h:=7924021+491520=8415541, hh:=533
+733: set1 191("BF) h:=8415541+491520=8907061, hh:=564
+735: w0 218453 h:=8907061+218453=9125514, hh:=578
+[ ]
+736: fntnum1 current font is umin10
+737: set2 39003("985B) type=0 h:=9125514+630598=9756112, hh:=618
+740: x3 436906 h:=9756112+436906=10193018, hh:=646
+[顛 ]
+744: fntnum0 current font is ec-lmr10
+745: set1 197("C5) h:=10193018+491520=10684538, hh:=677
+747: set1 191("BF) h:=10684538+491520=11176058, hh:=708
+749: w0 218453 h:=11176058+218453=11394511, hh:=722
+[ ]
+750: fntnum1 current font is umin10
+751: set2 39003("985B) type=0 h:=11394511+630598=12025109, hh:=762
+754: x0 436906 h:=12025109+436906=12462015, hh:=789
+755: set2 12356("3044) type=0 h:=12462015+630598=13092613, hh:=829
+[顛 い]
+758: fntnum0 current font is ec-lmr10
+759: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864
+760: setchar97 ("61) h:=13638724+327680=13966404, hh:=885
+761: setchar99 ("63) h:=13966404+291275=14257679, hh:=903
+762: setchar114 ("72) h:=14257679+256683=14514362, hh:=919
+763: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940
+764: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952
+765: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966
+766: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998
+[macro:->]
+767: set1 197("C5) h:=15752276+491520=16243796, hh:=1029
+769: set1 191("BF) h:=16243796+491520=16735316, hh:=1060
+771: w0 218453 h:=16735316+218453=16953769, hh:=1074
+[ ]
+772: set1 197("C5) h:=16953769+491520=17445289, hh:=1105
+774: set1 191("BF) h:=17445289+491520=17936809, hh:=1136
+776: w0 218453 h:=17936809+218453=18155262, hh:=1150
+[ ]
+777: fntnum1 current font is umin10
+778: set2 39003("985B) type=0 h:=18155262+630598=18785860, hh:=1190
+[顛]
+781: pop
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+782: y0 786432 v:=13238272+786432=14024704, vv:=888
+783: push
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+784: right3 1310720 h:=0+1310720=1310720, hh:=83
+788: set2 12354("3042) type=0 h:=1310720+630598=1941318, hh:=123
+[ あ]
+791: fntnum0 current font is ec-lmr10
+792: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+794: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+796: w3 218453 h:=2924358+218453=3142811, hh:=199
+[ ]
+800: set1 197("C5) h:=3142811+491520=3634331, hh:=230
+802: set1 191("BF) h:=3634331+491520=4125851, hh:=261
+804: fntnum1 current font is umin10
+805: set2 39003("985B) type=0 h:=4125851+630598=4756449, hh:=301
+[顛]
+808: fntnum0 current font is ec-lmr10
+809: set1 197("C5) h:=4756449+491520=5247969, hh:=332
+811: set1 191("BF) h:=5247969+491520=5739489, hh:=363
+813: w0 218453 h:=5739489+218453=5957942, hh:=377
+814: setchar97 ("61) h:=5957942+327680=6285622, hh:=398
+[ a]
+815: set1 197("C5) h:=6285622+491520=6777142, hh:=429
+817: set1 191("BF) h:=6777142+491520=7268662, hh:=460
+819: w0 218453 h:=7268662+218453=7487115, hh:=474
+[ ]
+820: set1 197("C5) h:=7487115+491520=7978635, hh:=505
+822: set1 191("BF) h:=7978635+491520=8470155, hh:=536
+824: w0 218453 h:=8470155+218453=8688608, hh:=550
+[ ]
+825: fntnum1 current font is umin10
+826: set2 39003("985B) type=0 h:=8688608+630598=9319206, hh:=590
+829: w0 218453 h:=9319206+218453=9537659, hh:=604
+[顛 ]
+830: fntnum0 current font is ec-lmr10
+831: set1 197("C5) h:=9537659+491520=10029179, hh:=635
+833: set1 191("BF) h:=10029179+491520=10520699, hh:=666
+835: w0 218453 h:=10520699+218453=10739152, hh:=680
+[ ]
+836: set1 197("C5) h:=10739152+491520=11230672, hh:=711
+838: set1 191("BF) h:=11230672+491520=11722192, hh:=742
+840: w0 218453 h:=11722192+218453=11940645, hh:=756
+[ ]
+841: fntnum1 current font is umin10
+842: set2 39003("985B) type=0 h:=11940645+630598=12571243, hh:=796
+845: right3 436906 h:=12571243+436906=13008149, hh:=824
+[顛 ]
+849: fntnum0 current font is ec-lmr10
+850: set1 197("C5) h:=13008149+491520=13499669, hh:=855
+852: set1 191("BF) h:=13499669+491520=13991189, hh:=886
+854: w0 218453 h:=13991189+218453=14209642, hh:=900
+[ ]
+855: fntnum1 current font is umin10
+856: set2 39003("985B) type=0 h:=14209642+630598=14840240, hh:=940
+859: w0 218453 h:=14840240+218453=15058693, hh:=954
+860: set2 12356("3044) type=0 h:=15058693+630598=15689291, hh:=994
+[顛 い]
+863: fntnum0 current font is ec-lmr10
+864: set1 255("FF) h:=15689291+327680=16016971, hh:=1015
+866: pop
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+867: y0 786432 v:=14024704+786432=14811136, vv:=938
+868: push
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+869: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+873: fntnum1 current font is umin10
+874: set2 12356("3044) type=0 h:=1310720+630598=1941318, hh:=123
+[い]
+877: pop
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+878: y0 786432 v:=14811136+786432=15597568, vv:=988
+879: push
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+880: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+884: fntnum0 current font is ec-lmr10
+885: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+886: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+887: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+888: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+889: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+890: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+891: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+892: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+893: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+894: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[.a...c.b..]
+895: pop
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+896: y0 786432 v:=15597568+786432=16384000, vv:=1038
+897: push
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+898: right3 1310720 h:=0+1310720=1310720, hh:=83
+902: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+903: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+904: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+905: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+906: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+907: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+908: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+909: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+910: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+911: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[ .a...c.b..]
+912: pop
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+913: y0 786432 v:=16384000+786432=17170432, vv:=1088
+914: push
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+915: push
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+916: fntnum1 current font is umin10
+917: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40
+[■]
+920: pop
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+921: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+925: fntnum0 current font is ec-lmr10
+926: setchar99 ("63) h:=630598+291275=921873, hh:=58
+927: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+928: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+929: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+930: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+931: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+932: setchar50 ("32) h:=2709530+327680=3037210, hh:=192
+933: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname2.]
+934: pop
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+935: y0 786432 v:=17170432+786432=17956864, vv:=1137
+936: push
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+937: right3 1310720 h:=0+1310720=1310720, hh:=83
+941: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+942: setchar72 ("48) h:=1674805+491520=2166325, hh:=137
+943: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169
+944: right2 -18205 h:=2676063-18205=2657858, hh:=168
+947: setchar87 ("57) h:=2657858+673578=3331436, hh:=211
+948: right3 218453 h:=3331436+218453=3549889, hh:=225
+952: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237
+953: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249
+954: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261
+[ SHOW ...]
+955: pop
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+956: y0 786432 v:=17956864+786432=18743296, vv:=1187
+957: push
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+958: right3 1310720 h:=0+1310720=1310720, hh:=83
+962: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+963: setchar84 ("54) h:=1674805+473301=2148106, hh:=136
+964: setchar82 ("52) h:=2148106+482410=2630516, hh:=167
+965: setchar73 ("49) h:=2630516+236650=2867166, hh:=182
+966: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213
+967: setchar71 ("47) h:=3358686+514261=3872947, hh:=246
+968: right3 218453 h:=3872947+218453=4091400, hh:=259
+972: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280
+[ STRING \]
+973: set1 197("C5) h:=4419080+491520=4910600, hh:=311
+975: set1 191("BF) h:=4910600+491520=5402120, hh:=342
+977: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354
+978: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375
+[.\]
+979: fntnum1 current font is umin10
+980: set2 39003("985B) type=0 h:=5911843+630598=6542441, hh:=415
+[顛]
+983: fntnum0 current font is ec-lmr10
+984: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427
+985: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448
+[.\]
+986: set1 197("C5) h:=7052164+491520=7543684, hh:=479
+988: set1 191("BF) h:=7543684+491520=8035204, hh:=510
+990: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522
+991: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543
+[.\]
+992: fntnum1 current font is umin10
+993: set2 39003("985B) type=0 h:=8544927+630598=9175525, hh:=583
+[顛]
+996: pop
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+997: y0 786432 v:=18743296+786432=19529728, vv:=1237
+998: push
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+999: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+1003: fntnum0 current font is ec-lmr10
+1004: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121
+1005: setchar69 ("45) h:=1911488+446005=2357493, hh:=149
+1006: setchar65 ("41) h:=2357493+491520=2849013, hh:=180
+1007: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211
+1008: setchar73 ("49) h:=3340533+236650=3577183, hh:=226
+1009: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257
+1010: setchar71 ("47) h:=4068703+514261=4582964, hh:=290
+1011: right3 218453 h:=4582964+218453=4801417, hh:=304
+1015: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339
+1016: setchar97 ("61) h:=5347528+327680=5675208, hh:=360
+1017: setchar99 ("63) h:=5675208+291275=5966483, hh:=378
+1018: setchar114 ("72) h:=5966483+256683=6223166, hh:=394
+1019: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415
+1020: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427
+1021: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441
+1022: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473
+1023: setchar97 ("61) h:=7461080+327680=7788760, hh:=494
+1024: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506
+1025: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541
+1026: setchar97 ("61) h:=8516914+327680=8844594, hh:=562
+1027: setchar99 ("63) h:=8844594+291275=9135869, hh:=580
+1028: setchar114 ("72) h:=9135869+256683=9392552, hh:=596
+1029: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617
+1030: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629
+1031: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643
+1032: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675
+1033: setchar98 ("62) h:=10630466+364085=10994551, hh:=698
+1034: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710
+1035: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745
+1036: setchar97 ("61) h:=11722705+327680=12050385, hh:=765
+1037: setchar99 ("63) h:=12050385+291275=12341660, hh:=783
+1038: setchar114 ("72) h:=12341660+256683=12598343, hh:=799
+1039: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820
+1040: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832
+1041: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846
+1042: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878
+1043: setchar97 ("61) h:=13836257+327680=14163937, hh:=899
+1044: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911
+1045: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945
+1046: setchar97 ("61) h:=14892091+327680=15219771, hh:=966
+1047: setchar99 ("63) h:=15219771+291275=15511046, hh:=984
+1048: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000
+1049: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021
+1050: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033
+1051: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047
+1052: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079
+1053: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102
+1054: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114
+[MEANING macro:->a.macro:->b.macro:->a.macro:->b.]
+1055: pop
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+1056: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+1057: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+1061: eop
diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-prim.log b/Build/source/texk/web2c/euptexdir/tests/eup-prim.log
new file mode 100644
index 00000000000..8e2c97d9459
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/eup-prim.log
@@ -0,0 +1,10 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-prim
+(./eup-prim.tex
+15: \^^c5^^93. \^^c5^^93.
+18: \œ. \œ.
+15: \^^c3^^a6. \^^c3^^a6. 195^^a6.
+18: \æ. \æ. 230. )
+No pages of output.
diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-prim.tex b/Build/source/texk/web2c/euptexdir/tests/eup-prim.tex
new file mode 100644
index 00000000000..46d936da5e7
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/eup-prim.tex
@@ -0,0 +1,33 @@
+% Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+% You may freely use, modify and/or distribute this file.
+%
+\tracingmacros=2
+\tracingonline=1
+%----
+\newlinechar=10
+
+%\catcode"0153=12
+\kcatcode"0153=15\relax
+\message{^^J\the\kcatcode"153:
+ \string\œ. \expandafter\string\csname œ\endcsname. %
+ }
+
+\kcatcode"0153=18\relax
+\message{^^J\the\kcatcode"153:
+ \string\œ. \expandafter\string\csname œ\endcsname. %
+ }
+
+%\catcode"E6=12
+\kcatcode"E6=15\relax
+\message{^^J\the\kcatcode"E6:
+ \string\æ. \expandafter\string\csname æ\endcsname. %
+ \the\numexpr`\æ.}
+
+\kcatcode"E6=18\relax
+\message{^^J\the\kcatcode"E6:
+ \string\æ. \expandafter\string\csname æ\endcsname. %
+ \the\numexpr`\æ.}
+%----
+\setbox0=\vbox{} % no dvi output
+
+\end
diff --git a/Build/source/texk/web2c/euptexdir/tests/free_ixsp.log b/Build/source/texk/web2c/euptexdir/tests/free_ixsp.log
new file mode 100644
index 00000000000..05639d0ffdc
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/free_ixsp.log
@@ -0,0 +1,29 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-free_ixsp.tex
+(./eup-free_ixsp.tex
+\@tempcnta=\count26
+\@tempcntb=\count27
+\@tempcntc=\count28
+\CNT=\count29
+\CNTA=\count30
+0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
+22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
+41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
+60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78.
+79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97.
+98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113.
+114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128.
+129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143.
+144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158.
+159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173.
+174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188.
+189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203.
+204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218.
+219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233.
+234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248.
+249. 250. 251. 252. 253. 254. 255.
+\CNTB=\count31
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/ptexdir/tests/free_ixsp.tex b/Build/source/texk/web2c/euptexdir/tests/free_ixsp.tex
index 9a3b2766415..4fb69d84406 100644
--- a/Build/source/texk/web2c/ptexdir/tests/free_ixsp.tex
+++ b/Build/source/texk/web2c/euptexdir/tests/free_ixsp.tex
@@ -1,7 +1,8 @@
%#!eptex -ini -etex
-\let\dump\relax
-\batchmode
-\input plain
+%\let\dump\relax
+%\batchmode
+%\input plain
+\font\cmr=cmr10\cmr
\errorstopmode
\catcode`@=11
diff --git a/Build/source/texk/web2c/euptexdir/tests/free_pena.log b/Build/source/texk/web2c/euptexdir/tests/free_pena.log
new file mode 100644
index 00000000000..73d7df615a4
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/free_pena.log
@@ -0,0 +1,29 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-free_pena.tex
+(./eup-free_pena.tex
+\@tempcnta=\count26
+\@tempcntb=\count27
+\@tempcntc=\count28
+\CNT=\count29
+\CNTA=\count30
+0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
+22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
+41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
+60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78.
+79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97.
+98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113.
+114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128.
+129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143.
+144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158.
+159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173.
+174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188.
+189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203.
+204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218.
+219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233.
+234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248.
+249. 250. 251. 252. 253. 254. 255.
+\CNTB=\count31
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/ptexdir/tests/free_pena.tex b/Build/source/texk/web2c/euptexdir/tests/free_pena.tex
index 184720a80a2..f7d2b51bcad 100644
--- a/Build/source/texk/web2c/ptexdir/tests/free_pena.tex
+++ b/Build/source/texk/web2c/euptexdir/tests/free_pena.tex
@@ -1,7 +1,15 @@
%#!eptex -ini -etex
-\let\dump\relax
-\batchmode
-\input plain
+%\let\dump\relax
+%\batchmode
+%\input plain
+\font\cmr=cmr10\cmr
+\ifx\kanjiskip\undefined\else
+ \ifnum\jis"2121="3000
+ \jfont\jpy=umin10 at 10pt\jpy
+ \else
+ \jfont\jpy=min10 at 10pt\jpy
+ \fi
+\fi
\errorstopmode
\catcode`@=11
diff --git a/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex b/Build/source/texk/web2c/euptexdir/tests/inhibitglue.tex
index 2c76a9782a8..6dd55dbdadf 100644
--- a/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex
+++ b/Build/source/texk/web2c/euptexdir/tests/inhibitglue.tex
@@ -1,4 +1,14 @@
%#!ptex2pdf -e inhibitglue.tex
+\font\cmr=cmr10\cmr
+\font\tentt=cmtt10\tentt
+\ifx\kanjiskip\undefined\else
+ \ifnum\jis"2121="3000
+ \jfont\jpy=umin10 at 10pt\jpy
+ \else
+ \jfont\jpy=min10 at 10pt\jpy
+ \fi
+\fi
+
\parindent0pt
\def\head#1{\par\noindent{\tentt ■\string#1}\par}
\noautospacing \noautoxspacing
@@ -82,13 +92,13 @@
あ)\adj\inhibitglue\adj (あ\par % 全角【TL17二分】
あ)\adj (あ\par % 全角
-\head{\math}
-\def\math{$ $}
-あ)\inhibitglue (あ\par % ベタ
-あ)\inhibitglue\math (あ\par % 二分
-あ)\math\inhibitglue (あ\par % 二分
-あ)\math\inhibitglue\math (あ\par % 全角【TL17二分】
-あ)\math (あ\par % 全角
+%\head{\math}
+%\def\math{$ $}
+%あ)\inhibitglue (あ\par % ベタ
+%あ)\inhibitglue\math (あ\par % 二分
+%あ)\math\inhibitglue (あ\par % 二分
+%あ)\math\inhibitglue\math (あ\par % 全角【TL17二分】
+%あ)\math (あ\par % 全角
%%% unexpandable tokens with discardable nodes (glue, kern, penalty)
diff --git a/Build/source/texk/web2c/euptexdir/tests/jctrlsym.log b/Build/source/texk/web2c/euptexdir/tests/jctrlsym.log
new file mode 100644
index 00000000000..c919554f580
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/jctrlsym.log
@@ -0,0 +1,85 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-jctrlsym.tex
+(./eup-jctrlsym.tex
+■control symbol
+> \X=macro:
+->\+.
+l.27 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\+)
+> \Y=macro:
+->\+.
+l.28 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\+) ■control word
+> \X=macro:
+->\+ .
+l.39 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\+ )
+> \Y=macro:
+->\+ .
+l.40 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\+ ) ■control word
+> \X=macro:
+->\ABC .
+l.48 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\ABC )
+> \Y=macro:
+->\あいう .
+l.49 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\あいう ) ■csname
+> \X=macro:
+->\:AB .
+l.62 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\:AB )
+> \Y=macro:
+->\!あい .
+l.63 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\!あい )
+> \X=macro:
+->\AB: .
+l.69 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\AB: )
+> \Y=macro:
+->\あい! .
+l.70 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\あい! ) ■not_cjk
+> \X=macro:
+->\^^e3^^82^^a2 .
+l.81 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\^^e3^^82^^a2 )
+> \Y=macro:
+->\^^ef^^bc^^81 .
+l.82 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\^^ef^^bc^^81 ) ■行末の和文^^e3^^82^^b3^^e3^^83^^b3^^e3^^83^^88
+^^e3^^83^^ad^^e3^^83^^bc^^e3^^83^^ab^^e3^^82^^b7^^e3^^83^^b3^^e3^^83^^9c^^e3^^8
+3^^ab
+Missing character: There is no ^^ef in font cmr10!
+Missing character: There is no ^^bc in font cmr10!
+Missing character: There is no ^^8c in font cmr10!
+ [1] )
+Output written on eup-jctrlsym.dvi (1 page, 372 bytes).
diff --git a/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.log b/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.log
new file mode 100644
index 00000000000..be8dbe27583
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.log
@@ -0,0 +1,84 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-kinsoku_search.tex
+(./eup-kinsoku_search.tex{into \tracingassigns=1}
+{changing kinsoku table 1, type=no, code=0}
+{into kinsoku table 1, type=pre, code=12289}
+{changing kinsoku table 1, penalty=0}
+{into kinsoku table 1, penalty=10000}
+{changing kinsoku table 2, type=no, code=0}
+{into kinsoku table 2, type=pre, code=12290}
+{changing kinsoku table 2, penalty=0}
+{into kinsoku table 2, penalty=10000}
+{changing kinsoku table 3, type=no, code=0}
+{into kinsoku table 3, type=pre, code=12353}
+{changing kinsoku table 3, penalty=0}
+{into kinsoku table 3, penalty=150}
+{changing kinsoku table 4, type=no, code=0}
+{into kinsoku table 4, type=pre, code=12355}
+{changing kinsoku table 4, penalty=0}
+{into kinsoku table 4, penalty=150}
+> 0.
+l.11 \showthe\currentgrouplevel
+ % > 0.
+
+> 150.
+l.12 \showthe\prebreakpenalty`ぃ
+ % > 150.
+
+{changing kinsoku table 4, type=pre, code=12355}
+{into kinsoku table 4, type=unused, code=0}
+> 0.
+l.15 \showthe\prebreakpenalty`ぃ
+ % > 0. ← OK(hash=4読出)
+
+{changing kinsoku table 4, type=unused, code=0}
+{into kinsoku table 4, type=pre, code=12355}
+{changing kinsoku table 4, penalty=150}
+{into kinsoku table 4, penalty=123}
+> 123.
+l.18 \showthe\prebreakpenalty`ぃ
+ % > 123. ← OK(hash=4読出)
+
+{changing kinsoku table 3, type=pre, code=12353}
+{into kinsoku table 3, type=unused, code=0}
+> 123.
+l.21 \showthe\prebreakpenalty`ぃ
+ % > 123. ← OK(hash=4読出)
+
+{changing kinsoku table 4, type=pre, code=12355}
+{into kinsoku table 4, type=unused, code=0}
+> 0.
+l.27 \showthe\prebreakpenalty`ぃ
+ % > 0. ← 修正(削除済み)
+
+{changing kinsoku table 3, type=unused, code=0}
+{into kinsoku table 3, type=pre, code=12355}
+{changing kinsoku table 3, penalty=150}
+{into kinsoku table 3, penalty=234}
+> 234.
+l.30 \showthe\prebreakpenalty`ぃ
+ % > 234. ← OK(hash=3読出)
+
+{changing kinsoku table 3, type=pre, code=12355}
+{into kinsoku table 3, type=unused, code=0}
+> 0.
+l.33 \showthe\prebreakpenalty`ぃ
+ % > 0. ← 修正(削除済み)
+
+{changing kinsoku table 3, type=unused, code=0}
+{into kinsoku table 3, type=pre, code=12353}
+{changing kinsoku table 3, penalty=234}
+{into kinsoku table 3, penalty=345}
+> 0.
+l.36 \showthe\prebreakpenalty`ぃ
+ % > 0. ← 修正(削除済み)
+
+{reassigning kinsoku table 4, type=unused, code=0}
+> 0.
+l.41 \showthe\prebreakpenalty`ぃ
+ % > 0. ← OK(削除済み)
+
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/ptexdir/tests/kinsoku_search.tex b/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.tex
index e59445e7d9c..e59445e7d9c 100644
--- a/Build/source/texk/web2c/ptexdir/tests/kinsoku_search.tex
+++ b/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.tex
diff --git a/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.log b/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.log
new file mode 100644
index 00000000000..46968151697
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.log
@@ -0,0 +1,38 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-kinsoku_table.tex
+(./eup-kinsoku_table.tex
+\fuga=\count26
+\dflt=\count27
+
+\hoge=\count28
+12288 12291 12294 12297 12300 12303 12306 12309 12312 12315 12318 12321 12324
+12327 12330 12333 12336 12339 12342 12345 12348 12351 12354 12357 12360 12363
+12366 12369 12372 12375 12378 12381 12384 12387 12390 12393 12396 12399 12402
+12405 12408 12411 12414 12417 12420 12423 12426 12429 12432 12435 12438 12441
+12444 12447 12450 12453 12456 12459 12462 12465 12468 12471 12474 12477 12480
+12483 12486 12489 12492 12495 12498 12501 12504 12507 12510 12513 12516 12519
+12522 12525 12528 12531 12534 12537 12540 12543 12546 12549 12552 12555 12558
+12561 12564 12567 12570 12573 12576 12579 12582 12585 12588 12591 12594 12597
+12600 12603 12606 12609 12612 12615 12618 12621 12624 12627 12630 12633 12636
+12639 12642 12645 12648 12651 12654 12657 12660 12663 12666 12669 12672 12675
+12678 12681 12684 12687 12690 12693 12696 12699 12702 12705 12708 12711 12714
+12717 12720 12723 12726 12729 12732 12735 12738 12741 12744 12747 12750 12753
+12756 12759 12762 12765 12768 12771 12774 12777 12780 12783 12786 12789 12792
+12795 12798 12801 12804 12807 12810 12813 12816 12819 12822 12825 12828 12831
+12834 12837 12840 12843 12846 12849 12852 12855 12858 12861 12864 12867 12870
+12873 12876 12879 12882 12885 12888 12891 12894 12897 12900 12903 12906 12909
+12912 12915 12918 12921 12924 12927 12930 12933 12936 12939 12942 12945 12948
+12951 12954 12957 12960 12963 12966 12969 12972 12975 12978 12981 12984 12987
+12990 12993 12996 12999 13002 13005 13008 13011 13014 13017 13020 13023 13026
+13029 13032 13035 13038 13041 13044 13047 13050 13053 <2, 0>
+! KINSOKU table is full!!.
+<to be read again>
+ \relax
+l.23 \global\prebreakpenalty"4000=1\relax
+ % error
+I'm skipping this control sequences.
+
+<0, 0> <2, 0> <0, 1> <0, 0> <0, 1, 0> <0, 0, 1> )
+No pages of output.
diff --git a/Build/source/texk/web2c/ptexdir/tests/kinsoku_table.tex b/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.tex
index 52b21fdbf86..a064af9fc41 100644
--- a/Build/source/texk/web2c/ptexdir/tests/kinsoku_table.tex
+++ b/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.tex
@@ -1,6 +1,7 @@
%#!uptex -ini
-\let\dump\relax
-\input plain
+%\let\dump\relax
+%\input plain
+
\newcount\fuga\newcount\dflt
\fuga="3300
\iffalse
diff --git a/Build/source/texk/web2c/euptexdir/tests/pknj-e.log b/Build/source/texk/web2c/euptexdir/tests/pknj-e.log
new file mode 100644
index 00000000000..a38e4fec2ff
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/pknj-e.log
@@ -0,0 +1,224 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**printkanji
+(./printkanji.tex
+\openout1 = `eup-pknj-e.out'.
+
+
+{MSG ^^c5^^bf ^^c5^^bf 顛 }
+{TOT ^^c5^^bf ^^c5^^bf 顛 }
+> \A=macro:
+->^^c5^^bf ^^c5^^bf 顛 .
+l.29 \show\A
+
+
+■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+> \B=macro:
+->macro:->^^c5^^bf ^^c5^^bf 顛 .
+l.40 \show\B
+
+
+■\jobname. {MSG *あ*eup-pknj-e*:eup-pknj-e:*macro:->:eup-pknj-e:*}
+{TOT *あ*eup-pknj-e*:eup-pknj-e:*macro:->:eup-pknj-e:*}
+
+■oneletter. {MSG \catcode`\^^c5= 197}
+{TOT \catcode`\^^c5= 197}
+{MSG \catcode`^^c5 = 197}
+{TOT \catcode`^^c5 = 197}
+{MSG \catcode`^^c5^^bf = 197}
+{TOT \catcode`^^c5^^bf = 197}
+{MSG \catcode`顛 = 50623}
+{TOT \catcode`顛 = 50623}
+■csname1.
+> \顛=macro:
+->hoge.
+l.72 \show\顛
+
+
+> \^^c5^^bf=macro:
+->piyo.
+l.73 \show\^^c5^^bf
+
+
+> \^^c5^^bf=macro:
+->piyo.
+<recently read> \^^c5^^bf
+
+l.74 \expandafter\show\csname ^^c5^^bf\endcsname
+
+
+{MSG \顛=>macro:->hoge}
+{TOT \顛=>macro:->hoge}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+
+{MSG \あ=> hoge, \^^a4^^a2=> piyo. \^^a4^^a2=> piyo. }
+{TOT \あ=> hoge, \^^a4^^a2=> piyo. \^^a4^^a2=> piyo. }
+■0xFF.
+{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m
+acro:->あ).}
+{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m
+acro:->あ).}
+{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+■contexts.
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1
+ \^^ff macro:->^^c5^^bf ^^c5^^bf 顛 ...
+l.136 \+\a
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+l.138 ...5^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a
+ \^^ff ^^ff\^^c5^^bf
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5
+ \^^ff\^^c4\^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4
+ \^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4\^^fe
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+\^^c5^^bf\^^ff^^c5
+! Undefined control sequence.
+\b ->\^^c5^^be
+ .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd
+ ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ...5^^be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼
+ .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be
+ .\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd
+ ..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼
+ .
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+■csname2.
+> \^^c5^^bf=macro:
+->a.
+l.162 SHOW \show\^^c5^^bf
+ .\show\顛.%
+
+> \顛=macro:
+->b.
+l.162 SHOW \show\^^c5^^bf.\show\顛
+ .%
+
+> \^^c5^^bf=macro:
+->a.
+<recently read> \^^c5^^bf
+
+l.163 \expandafter\show\csname ^^c5^^bf\endcsname
+ .%
+
+> \顛=macro:
+->b.
+<recently read> \顛
+
+l.164 \expandafter\show\csname 顛\endcsname
+
+
+\^^e3^^81^^82\あ [50623]
+Memory usage before: 1790&5515; after: 130&5080; still untouched: 4992452
+ )
+Here is how much of TeX's memory you used:
+ 25 strings out of 497XXX
+ 143 string characters out of 6215XXX
+ 7548 words of memory out of 5000000
+ 1090 multiletter control sequences out of 15000+600000
+ 3271 words of font info for 2 fonts, out of 8000000 for 9000
+ 0 hyphenation exceptions out of 8191
+ 6i,4n,2p,97b,26s stack positions out of 10000i,1000n,20000p,200000b,200000s
+
+Output written on eup-pknj-e.dvi (1 page, 1140 bytes).
diff --git a/Build/source/texk/web2c/euptexdir/tests/pknj-s.log b/Build/source/texk/web2c/euptexdir/tests/pknj-s.log
new file mode 100644
index 00000000000..4fea4e53a4a
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/pknj-s.log
@@ -0,0 +1,224 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**printkanji
+(./printkanji.tex
+\openout1 = `eup-pknj-s.out'.
+
+
+{MSG ^^c5^^bf ^^c5^^bf 顛 }
+{TOT ^^c5^^bf ^^c5^^bf 顛 }
+> \A=macro:
+->^^c5^^bf ^^c5^^bf 顛 .
+l.29 \show\A
+
+
+■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+> \B=macro:
+->macro:->^^c5^^bf ^^c5^^bf 顛 .
+l.40 \show\B
+
+
+■\jobname. {MSG *あ*eup-pknj-s*:eup-pknj-s:*macro:->:eup-pknj-s:*}
+{TOT *あ*eup-pknj-s*:eup-pknj-s:*macro:->:eup-pknj-s:*}
+
+■oneletter. {MSG \catcode`\^^c5= 197}
+{TOT \catcode`\^^c5= 197}
+{MSG \catcode`^^c5 = 197}
+{TOT \catcode`^^c5 = 197}
+{MSG \catcode`^^c5^^bf = 197}
+{TOT \catcode`^^c5^^bf = 197}
+{MSG \catcode`顛 = 37726}
+{TOT \catcode`顛 = 37726}
+■csname1.
+> \顛=macro:
+->hoge.
+l.72 \show\顛
+
+
+> \^^c5^^bf=macro:
+->piyo.
+l.73 \show\^^c5^^bf
+
+
+> \^^c5^^bf=macro:
+->piyo.
+<recently read> \^^c5^^bf
+
+l.74 \expandafter\show\csname ^^c5^^bf\endcsname
+
+
+{MSG \顛=>macro:->hoge}
+{TOT \顛=>macro:->hoge}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+
+{MSG \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. }
+{TOT \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. }
+■0xFF.
+{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m
+acro:->あ).}
+{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m
+acro:->あ).}
+{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+■contexts.
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1
+ \^^ff macro:->^^c5^^bf ^^c5^^bf 顛 ...
+l.136 \+\a
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+l.138 ...5^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a
+ \^^ff ^^ff\^^c5^^bf
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5
+ \^^ff\^^c4\^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4
+ \^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4\^^fe
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+\^^c5^^bf\^^ff^^c5
+! Undefined control sequence.
+\b ->\^^c5^^be
+ .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd
+ ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ...5^^be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼
+ .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be
+ .\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd
+ ..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼
+ .
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+■csname2.
+> \^^c5^^bf=macro:
+->a.
+l.162 SHOW \show\^^c5^^bf
+ .\show\顛.%
+
+> \顛=macro:
+->b.
+l.162 SHOW \show\^^c5^^bf.\show\顛
+ .%
+
+> \^^c5^^bf=macro:
+->a.
+<recently read> \^^c5^^bf
+
+l.163 \expandafter\show\csname ^^c5^^bf\endcsname
+ .%
+
+> \顛=macro:
+->b.
+<recently read> \顛
+
+l.164 \expandafter\show\csname 顛\endcsname
+
+
+\^^e3^^81^^82\あ [37726]
+Memory usage before: 1798&5518; after: 130&5081; still untouched: 4992449
+ )
+Here is how much of TeX's memory you used:
+ 24 strings out of 497XXX
+ 141 string characters out of 6215XXX
+ 7551 words of memory out of 5000000
+ 1089 multiletter control sequences out of 15000+600000
+ 3271 words of font info for 2 fonts, out of 8000000 for 9000
+ 0 hyphenation exceptions out of 8191
+ 6i,4n,2p,97b,26s stack positions out of 10000i,1000n,20000p,200000b,200000s
+
+Output written on eup-pknj-s.dvi (1 page, 1148 bytes).
diff --git a/Build/source/texk/web2c/euptexdir/tests/pknj-u.log b/Build/source/texk/web2c/euptexdir/tests/pknj-u.log
new file mode 100644
index 00000000000..f456fc4c18e
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/pknj-u.log
@@ -0,0 +1,224 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**printkanji
+(./printkanji.tex
+\openout1 = `eup-pknj-u.out'.
+
+
+{MSG ^^c5^^bf ^^c5^^bf 顛 }
+{TOT ^^c5^^bf ^^c5^^bf 顛 }
+> \A=macro:
+->^^c5^^bf ^^c5^^bf 顛 .
+l.29 \show\A
+
+
+■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+> \B=macro:
+->macro:->^^c5^^bf ^^c5^^bf 顛 .
+l.40 \show\B
+
+
+■\jobname. {MSG *あ*eup-pknj-u*:eup-pknj-u:*macro:->:eup-pknj-u:*}
+{TOT *あ*eup-pknj-u*:eup-pknj-u:*macro:->:eup-pknj-u:*}
+
+■oneletter. {MSG \catcode`\^^c5= 197}
+{TOT \catcode`\^^c5= 197}
+{MSG \catcode`^^c5 = 197}
+{TOT \catcode`^^c5 = 197}
+{MSG \catcode`^^c5^^bf = 197}
+{TOT \catcode`^^c5^^bf = 197}
+{MSG \catcode`顛 = 39003}
+{TOT \catcode`顛 = 39003}
+■csname1.
+> \顛=macro:
+->hoge.
+l.72 \show\顛
+
+
+> \^^c5^^bf=macro:
+->piyo.
+l.73 \show\^^c5^^bf
+
+
+> \^^c5^^bf=macro:
+->piyo.
+<recently read> \^^c5^^bf
+
+l.74 \expandafter\show\csname ^^c5^^bf\endcsname
+
+
+{MSG \顛=>macro:->hoge}
+{TOT \顛=>macro:->hoge}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+
+{MSG \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. }
+{TOT \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. }
+■0xFF.
+{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf
+:macro:->あ).}
+{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf
+:macro:->あ).}
+{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+■contexts.
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1
+ \^^ff macro:->^^c5^^bf ^^c5^^bf ...
+l.136 \+\a
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+l.138 ...^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a
+ \^^ff ^^ff\^^c5^^bf
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5
+ \^^ff\^^c4\^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4
+ \^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4\^^fe
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+\^^c5^^bf\^^ff^^c5
+! Undefined control sequence.
+\b ->\^^c5^^be
+ .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd
+ ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ...be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼
+ .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be
+ .\ſ.\Ž..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd
+ ..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 ...5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼
+ .
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+■csname2.
+> \^^c5^^bf=macro:
+->a.
+l.162 SHOW \show\^^c5^^bf
+ .\show\顛.%
+
+> \顛=macro:
+->b.
+l.162 SHOW \show\^^c5^^bf.\show\顛
+ .%
+
+> \^^c5^^bf=macro:
+->a.
+<recently read> \^^c5^^bf
+
+l.163 \expandafter\show\csname ^^c5^^bf\endcsname
+ .%
+
+> \顛=macro:
+->b.
+<recently read> \顛
+
+l.164 \expandafter\show\csname 顛\endcsname
+
+
+\^^e3^^81^^82\あ [39003]
+Memory usage before: 1798&5518; after: 130&5081; still untouched: 4992449
+ )
+Here is how much of TeX's memory you used:
+ 24 strings out of 497XXX
+ 146 string characters out of 6215XXX
+ 7551 words of memory out of 5000000
+ 1089 multiletter control sequences out of 15000+600000
+ 3297 words of font info for 2 fonts, out of 8000000 for 9000
+ 0 hyphenation exceptions out of 8191
+ 6i,4n,2p,97b,26s stack positions out of 10000i,1000n,20000p,200000b,200000s
+
+Output written on eup-pknj-u.dvi (1 page, 1148 bytes).
diff --git a/Build/source/texk/web2c/euptexdir/tests/postpena.log b/Build/source/texk/web2c/euptexdir/tests/postpena.log
new file mode 100644
index 00000000000..6924c21fe99
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/postpena.log
@@ -0,0 +1,43 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-postpena.tex
+(./eup-postpena.tex
+
+### yoko direction, restricted horizontal mode entered at line 15
+\displace 0.0
+\jpy #
+\penalty 200(for kinsoku)
+\jpy 」
+\glue(refer from jfm) 4.58203 minus 2.291
+\jpy 「
+\penalty -1000
+spacefactor 1000
+### yoko direction, vertical mode entered at line 0
+prevdepth ignored
+
+! OK.
+<recently read> \showlists
+
+l.15 ...ox0=\hbox{#」「\penalty-1000\showlists
+ }
+
+
+### yoko direction, restricted horizontal mode entered at line 18
+\displace 0.0
+\jpy #
+\jpy 」
+\glue(refer from jfm) 4.58203 minus 2.291
+\cmr a
+\penalty 200(for kinsoku)
+\jpy あ
+spacefactor 1000
+### yoko direction, vertical mode entered at line 0
+prevdepth ignored
+
+! OK.
+l.18 ...box{#\unpenalty 」a\relax あ\showlists
+ }
+
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/ptexdir/tests/postpena.tex b/Build/source/texk/web2c/euptexdir/tests/postpena.tex
index 74f93a1f071..3605fe0c0b3 100644
--- a/Build/source/texk/web2c/ptexdir/tests/postpena.tex
+++ b/Build/source/texk/web2c/euptexdir/tests/postpena.tex
@@ -1,4 +1,12 @@
%% plain pTeX
+\font\cmr=cmr10\cmr
+\ifx\kanjiskip\undefined\else
+ \ifnum\jis"2121="3000
+ \jfont\jpy=umin10 at 10pt\jpy
+ \else
+ \jfont\jpy=min10 at 10pt\jpy
+ \fi
+\fi
\postbreakpenalty`#=200
\postbreakpenalty`a=200
\showboxdepth10000
diff --git a/Build/source/texk/web2c/euptexdir/tests/printkanji.tex b/Build/source/texk/web2c/euptexdir/tests/printkanji.tex
new file mode 100644
index 00000000000..d176d9a53bf
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/printkanji.tex
@@ -0,0 +1,176 @@
+%\scrollmode
+\tracingstats=1000
+\noautoxspacing
+\newlinechar=`\^^J
+\font\x=ec-lmr10 \x
+\ifx\kanjiskip\undefined\else
+ \ifnum\jis"2121="3000
+ \jfont\jpy=umin10 at 10pt\jpy
+ \else
+ \jfont\jpy=min10 at 10pt\jpy
+ \fi
+\fi
+
+
+\immediate\openout1=\jobname.out
+\def\MSG#1{%
+ \message{\string{MSG #1\string}}%
+ \immediate\write17{\string{TOT #1\string}}%
+ \immediate\write1{#1}%
+}
+\def\head#1{\message{■#1.}\par\noindent\hbox{■\null}#1.\par}
+\message{^^J}
+
+%================
+\def\A{^^c5^^bf ſ 顛 }
+A: \A
+
+\MSG{\A}
+\show\A
+
+%================
+\par
+\head{\string\meaning}
+
+\edef\B{\meaning\A}
+\meaning\B
+
+\B
+\MSG{\meaning\B}
+\show\B
+
+%================
+\head{\string\jobname}
+\edef\C{:\jobname:}
+\MSG{*あ*\jobname *\C*\meaning\C*}
+\message{^^J}
+
+%================
+\catcode`\^^c5=11
+\catcode`\^^bf=11
+\catcode`\^^e1=11
+\catcode`\^^e3=11
+\catcode`\^^81=11
+\catcode`\^^82=11
+
+\head{oneletter}
+
+\string\^^c4.\string\^^c5.\string\^^ff.
+\count0=`\^^c5%
+\MSG{\string\catcode`\string\^^c5 = \the\count0}%
+\count0=`^^c5%
+\MSG{\string\catcode`^^c5 = \the\count0}%
+\count0=`^^c5^^bf%
+\MSG{\string\catcode`^^c5^^bf = \the\count0}%
+\count0=`顛%
+\MSG{\string\catcode`顛 = \the\count0}%
+
+%================
+\head{csname1}
+
+{\def\顛{hoge}\def\^^c5^^bf{piyo}
+\show\顛
+\show\^^c5^^bf
+\expandafter\show\csname ^^c5^^bf\endcsname
+\MSG{\string\顛=>\meaning\顛}
+\MSG{\string\^^c5^^bf=>\meaning\^^c5^^bf}
+\MSG{\expandafter\string\csname ^^c5^^bf\endcsname
+ =>\expandafter\meaning\csname ^^c5^^bf\endcsname}}
+
+\string\^^c5^^bf
+\expandafter\string\csname ^^c5^^bf\endcsname,
+\expandafter\string\csname ſ\endcsname,
+\expandafter\string\csname 顛\endcsname
+\MSG{\string\^^c5^^bf,
+ \expandafter\string\csname ^^c5^^bf\endcsname,
+ \expandafter\string\csname ſ\endcsname,
+ \expandafter\string\csname 顛\endcsname.}
+
+%================
+
+\def\あ{hoge}
+\message{^^J}
+\def\TEST#1#2{%
+ \expandafter\def\csname#2\endcsname{piyo}
+ \par\toks0={#2}
+ \expandafter\string\csname #1\endcsname => \csname #1\endcsname,\par
+ \expandafter\string\csname #2\endcsname => \csname #2\endcsname,\par
+ \expandafter\string\csname \the\toks0\endcsname => \csname \the\toks0\endcsname.
+ \MSG{%
+ \expandafter\string\csname #1\endcsname => \csname #1\endcsname,
+ \expandafter\string\csname #2\endcsname => \csname #2\endcsname.
+ \expandafter\string\csname \the\toks0\endcsname => \csname \the\toks0\endcsname.
+ }%
+}
+\ifnum\euc"A4A2="A4A2\relax
+ \TEST{あ}{^^a4^^a2}
+\else
+ \TEST{あ}{^^e3^^81^^82}
+\fi
+
+%================
+\head{0xFF}
+\catcode"FF=11
+\message{^^J}
+
+\def\^^ff^^c5^^ff^^bf{あ}
+\edef\E{(\string\^^ff^^c5^^ff^^bf:\meaning\^^ff^^c5^^ff^^bf)}
+\^^ff^^c5^^ff^^bf, \E, \string\^^ff^^c5^^ff^^bf, \meaning\E.
+\MSG{\^^ff^^c5^^ff^^bf, \A, \string\^^ff^^c5^^ff^^bf, \meaning\E.}
+
+\def\^^ff{い}
+\edef\E{(\string\^^ff :\meaning\^^ff)}
+\^^ff, \E, \string\^^ff, \meaning\E.
+\MSG{\^^ff, \E, \string\^^ff, \meaning\E.}
+
+\immediate\closeout1
+
+%========
+\head{contexts}
+
+\errorcontextlines=10000
+\def\@{\A\undefined}
+\edef\a{^^c5^^bf a\A\noexpand\@ ſ 顛 }
+\edef\+#1{\noexpand\^^c5^^bf\noexpand\顛\noexpand\^^ff^^c5^^ff^^bf#1
+ \noexpand\^^ff\meaning\A\noexpand\^^c5^^bf\noexpand\顛}
+\+\a
+
+\^^ff^^c5^^ff^^bf ^^c5^^bf \^^c5^^bf ſ顛\a \^^ff ^^ff\^^c5^^bf
+
+\^^c5\^^ff\^^c4\^^fe
+
+\catcode`\^^c5=11
+\catcode`\^^be=11
+\catcode`\^^bf=11
+\catcode`\^^bd=11
+\catcode`\^^ff=11
+
+\def\^^c5^^bf{a}
+\def\顛{b}
+\def\転{c}
+\message{\string\^^c5^^bf \string\^^ff^^c5}
+
+\def\b{\ž.\ſ.\Ž..\転.\顛.\貼.}
+\b
+
+\ž.\ſ.\Ž..\転.\顛.\貼.
+
+
+%========
+\head{csname2}
+
+SHOW \show\ſ.\show\顛.%
+\expandafter\show\csname ſ\endcsname.%
+\expandafter\show\csname 顛\endcsname
+
+STRING \string\ſ.\string\顛.%
+\expandafter\string\csname ſ\endcsname.%
+\expandafter\string\csname 顛\endcsname
+
+MEANING \meaning\ſ.\meaning\顛.%
+\expandafter\meaning\csname ſ\endcsname.%
+\expandafter\meaning\csname 顛\endcsname.%
+
+\message{\string\^^e3^^81^^82 \string\あ}
+
+\end
diff --git a/Build/source/texk/web2c/euptexdir/tests/ucs-e.log b/Build/source/texk/web2c/euptexdir/tests/ucs-e.log
new file mode 100644
index 00000000000..684d2af0fa6
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/ucs-e.log
@@ -0,0 +1,29 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-ucs
+(./eup-ucs.tex
+<EUC>
+\ucs.
+\cntA=\count26
+162: 41457(¢)
+163: 41458(£)
+165: 41455(¥)
+167: 41464(§)
+168: 41391(¨)
+172: 41676(¬)
+176: 41451(°)
+177: 41438(±)
+180: 41389(´)
+182: 41721(¶)
+215: 41439(×)
+247: 41440(÷)
+\toucs.
+-1, -1, -1, -1, -1
+-1, 34821, 34722
+12354, 29081, -1
+41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676
+41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676
+41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/euptexdir/tests/ucs-s.log b/Build/source/texk/web2c/euptexdir/tests/ucs-s.log
new file mode 100644
index 00000000000..a8255446072
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/ucs-s.log
@@ -0,0 +1,29 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-ucs
+(./eup-ucs.tex
+<SJIS>
+\ucs.
+\cntA=\count26
+162: 33169(¢)
+163: 33170(£)
+165: 33167(¥)
+167: 33176(§)
+168: 33102(¨)
+172: 33226(¬)
+176: 33163(°)
+177: 33149(±)
+180: 33100(´)
+182: 33271(¶)
+215: 33150(×)
+247: 33152(÷)
+\toucs.
+-1, -1, -1, -1, -1
+12450, 29081, -1
+-1, -1, -1
+33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226
+33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226
+33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/euptexdir/tests/ucs-u.log b/Build/source/texk/web2c/euptexdir/tests/ucs-u.log
new file mode 100644
index 00000000000..c4dfe33b080
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/ucs-u.log
@@ -0,0 +1,529 @@
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**eup-ucs
+(./eup-ucs.tex
+<uptex>
+\ucs.
+\cntA=\count26
+0: 0(^^@)
+1: 1(^^A)
+2: 2(^^B)
+3: 3(^^C)
+4: 4(^^D)
+5: 5(^^E)
+6: 6(^^F)
+7: 7(^^G)
+8: 8(^^H)
+9: 9(^^I)
+10: 10(^^J)
+11: 11(^^K)
+12: 12(^^L)
+13: 13(^^M)
+14: 14(^^N)
+15: 15(^^O)
+16: 16(^^P)
+17: 17(^^Q)
+18: 18(^^R)
+19: 19(^^S)
+20: 20(^^T)
+21: 21(^^U)
+22: 22(^^V)
+23: 23(^^W)
+24: 24(^^X)
+25: 25(^^Y)
+26: 26(^^Z)
+27: 27(^^[)
+28: 28(^^\)
+29: 29(^^])
+30: 30(^^^)
+31: 31(^^_)
+32: 32( )
+33: 33(!)
+34: 34(")
+35: 35(#)
+36: 36($)
+37: 37(%)
+38: 38(&)
+39: 39(')
+40: 40(()
+41: 41())
+42: 42(*)
+43: 43(+)
+44: 44(,)
+45: 45(-)
+46: 46(.)
+47: 47(/)
+48: 48(0)
+49: 49(1)
+50: 50(2)
+51: 51(3)
+52: 52(4)
+53: 53(5)
+54: 54(6)
+55: 55(7)
+56: 56(8)
+57: 57(9)
+58: 58(:)
+59: 59(;)
+60: 60(<)
+61: 61(=)
+62: 62(>)
+63: 63(?)
+64: 64(@)
+65: 65(A)
+66: 66(B)
+67: 67(C)
+68: 68(D)
+69: 69(E)
+70: 70(F)
+71: 71(G)
+72: 72(H)
+73: 73(I)
+74: 74(J)
+75: 75(K)
+76: 76(L)
+77: 77(M)
+78: 78(N)
+79: 79(O)
+80: 80(P)
+81: 81(Q)
+82: 82(R)
+83: 83(S)
+84: 84(T)
+85: 85(U)
+86: 86(V)
+87: 87(W)
+88: 88(X)
+89: 89(Y)
+90: 90(Z)
+91: 91([)
+92: 92(\)
+93: 93(])
+94: 94(^)
+95: 95(_)
+96: 96(`)
+97: 97(a)
+98: 98(b)
+99: 99(c)
+100: 100(d)
+101: 101(e)
+102: 102(f)
+103: 103(g)
+104: 104(h)
+105: 105(i)
+106: 106(j)
+107: 107(k)
+108: 108(l)
+109: 109(m)
+110: 110(n)
+111: 111(o)
+112: 112(p)
+113: 113(q)
+114: 114(r)
+115: 115(s)
+116: 116(t)
+117: 117(u)
+118: 118(v)
+119: 119(w)
+120: 120(x)
+121: 121(y)
+122: 122(z)
+123: 123({)
+124: 124(|)
+125: 125(})
+126: 126(~)
+127: 127(^^?)
+128: 128(^^80)
+129: 129(^^81)
+130: 130(^^82)
+131: 131(^^83)
+132: 132(^^84)
+133: 133(^^85)
+134: 134(^^86)
+135: 135(^^87)
+136: 136(^^88)
+137: 137(^^89)
+138: 138(^^8a)
+139: 139(^^8b)
+140: 140(^^8c)
+141: 141(^^8d)
+142: 142(^^8e)
+143: 143(^^8f)
+144: 144(^^90)
+145: 145(^^91)
+146: 146(^^92)
+147: 147(^^93)
+148: 148(^^94)
+149: 149(^^95)
+150: 150(^^96)
+151: 151(^^97)
+152: 152(^^98)
+153: 153(^^99)
+154: 154(^^9a)
+155: 155(^^9b)
+156: 156(^^9c)
+157: 157(^^9d)
+158: 158(^^9e)
+159: 159(^^9f)
+160: 160(^^a0)
+161: 161(^^a1)
+162: 162(^^a2)
+163: 163(^^a3)
+164: 164(^^a4)
+165: 165(^^a5)
+166: 166(^^a6)
+167: 167(^^a7)
+168: 168(^^a8)
+169: 169(^^a9)
+170: 170(^^aa)
+171: 171(^^ab)
+172: 172(^^ac)
+173: 173(^^ad)
+174: 174(^^ae)
+175: 175(^^af)
+176: 176(^^b0)
+177: 177(^^b1)
+178: 178(^^b2)
+179: 179(^^b3)
+180: 180(^^b4)
+181: 181(^^b5)
+182: 182(^^b6)
+183: 183(^^b7)
+184: 184(^^b8)
+185: 185(^^b9)
+186: 186(^^ba)
+187: 187(^^bb)
+188: 188(^^bc)
+189: 189(^^bd)
+190: 190(^^be)
+191: 191(^^bf)
+192: 192(^^c0)
+193: 193(^^c1)
+194: 194(^^c2)
+195: 195(^^c3)
+196: 196(^^c4)
+197: 197(^^c5)
+198: 198(^^c6)
+199: 199(^^c7)
+200: 200(^^c8)
+201: 201(^^c9)
+202: 202(^^ca)
+203: 203(^^cb)
+204: 204(^^cc)
+205: 205(^^cd)
+206: 206(^^ce)
+207: 207(^^cf)
+208: 208(^^d0)
+209: 209(^^d1)
+210: 210(^^d2)
+211: 211(^^d3)
+212: 212(^^d4)
+213: 213(^^d5)
+214: 214(^^d6)
+215: 215(^^d7)
+216: 216(^^d8)
+217: 217(^^d9)
+218: 218(^^da)
+219: 219(^^db)
+220: 220(^^dc)
+221: 221(^^dd)
+222: 222(^^de)
+223: 223(^^df)
+224: 224(^^e0)
+225: 225(^^e1)
+226: 226(^^e2)
+227: 227(^^e3)
+228: 228(^^e4)
+229: 229(^^e5)
+230: 230(^^e6)
+231: 231(^^e7)
+232: 232(^^e8)
+233: 233(^^e9)
+234: 234(^^ea)
+235: 235(^^eb)
+236: 236(^^ec)
+237: 237(^^ed)
+238: 238(^^ee)
+239: 239(^^ef)
+240: 240(^^f0)
+241: 241(^^f1)
+242: 242(^^f2)
+243: 243(^^f3)
+244: 244(^^f4)
+245: 245(^^f5)
+246: 246(^^f6)
+247: 247(^^f7)
+248: 248(^^f8)
+249: 249(^^f9)
+250: 250(^^fa)
+251: 251(^^fb)
+252: 252(^^fc)
+253: 253(^^fd)
+254: 254(^^fe)
+255: 255(^^ff)
+\toucs.
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+10: 10
+11: 11
+12: 12
+13: 13
+14: 14
+15: 15
+16: 16
+17: 17
+18: 18
+19: 19
+20: 20
+21: 21
+22: 22
+23: 23
+24: 24
+25: 25
+26: 26
+27: 27
+28: 28
+29: 29
+30: 30
+31: 31
+32: 32
+33: 33
+34: 34
+35: 35
+36: 36
+37: 37
+38: 38
+39: 39
+40: 40
+41: 41
+42: 42
+43: 43
+44: 44
+45: 45
+46: 46
+47: 47
+48: 48
+49: 49
+50: 50
+51: 51
+52: 52
+53: 53
+54: 54
+55: 55
+56: 56
+57: 57
+58: 58
+59: 59
+60: 60
+61: 61
+62: 62
+63: 63
+64: 64
+65: 65
+66: 66
+67: 67
+68: 68
+69: 69
+70: 70
+71: 71
+72: 72
+73: 73
+74: 74
+75: 75
+76: 76
+77: 77
+78: 78
+79: 79
+80: 80
+81: 81
+82: 82
+83: 83
+84: 84
+85: 85
+86: 86
+87: 87
+88: 88
+89: 89
+90: 90
+91: 91
+92: 92
+93: 93
+94: 94
+95: 95
+96: 96
+97: 97
+98: 98
+99: 99
+100: 100
+101: 101
+102: 102
+103: 103
+104: 104
+105: 105
+106: 106
+107: 107
+108: 108
+109: 109
+110: 110
+111: 111
+112: 112
+113: 113
+114: 114
+115: 115
+116: 116
+117: 117
+118: 118
+119: 119
+120: 120
+121: 121
+122: 122
+123: 123
+124: 124
+125: 125
+126: 126
+127: 127
+128: 128
+129: 129
+130: 130
+131: 131
+132: 132
+133: 133
+134: 134
+135: 135
+136: 136
+137: 137
+138: 138
+139: 139
+140: 140
+141: 141
+142: 142
+143: 143
+144: 144
+145: 145
+146: 146
+147: 147
+148: 148
+149: 149
+150: 150
+151: 151
+152: 152
+153: 153
+154: 154
+155: 155
+156: 156
+157: 157
+158: 158
+159: 159
+160: 160
+161: 161
+162: 162
+163: 163
+164: 164
+165: 165
+166: 166
+167: 167
+168: 168
+169: 169
+170: 170
+171: 171
+172: 172
+173: 173
+174: 174
+175: 175
+176: 176
+177: 177
+178: 178
+179: 179
+180: 180
+181: 181
+182: 182
+183: 183
+184: 184
+185: 185
+186: 186
+187: 187
+188: 188
+189: 189
+190: 190
+191: 191
+192: 192
+193: 193
+194: 194
+195: 195
+196: 196
+197: 197
+198: 198
+199: 199
+200: 200
+201: 201
+202: 202
+203: 203
+204: 204
+205: 205
+206: 206
+207: 207
+208: 208
+209: 209
+210: 210
+211: 211
+212: 212
+213: 213
+214: 214
+215: 215
+216: 216
+217: 217
+218: 218
+219: 219
+220: 220
+221: 221
+222: 222
+223: 223
+224: 224
+225: 225
+226: 226
+227: 227
+228: 228
+229: 229
+230: 230
+231: 231
+232: 232
+233: 233
+234: 234
+235: 235
+236: 236
+237: 237
+238: 238
+239: 239
+240: 240
+241: 241
+242: 242
+243: 243
+244: 244
+245: 245
+246: 246
+247: 247
+248: 248
+249: 249
+250: 250
+251: 251
+252: 252
+253: 253
+254: 254
+255: 255
+0, 128, 215, 167, 65536
+33601, 60068, 60069
+42146, 62630, 62631
+65507, 8213, 12316, 8214, 8230, 8722, 65509, 65504, 65505, 65506
+8254, 8212, 12316, 8214, 8230, 8722, 165, 162, 163, 172
+65507, 8213, 65374, 8741, 8943, 65293, 65509, 65504, 65505, 65506
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/euptexdir/tests/ucs.tex b/Build/source/texk/web2c/euptexdir/tests/ucs.tex
new file mode 100644
index 00000000000..520a7485d57
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/tests/ucs.tex
@@ -0,0 +1,36 @@
+%#!eptex
+
+\def\typeout{\immediate\write17}
+
+\ifnum`あ="A4A2 \typeout{<EUC>}
+\else\ifnum`ア="8341 \typeout{<SJIS>}
+\else\typeout{<uptex>}\fi\fi
+
+\typeout{\string\ucs.}
+\newcount\cntA
+\loop\ifnum\cntA<256
+ \ifnum0>\ucs\cntA\else\typeout{\the\cntA: \ucs\cntA %
+ \ifx\Uchar\undefined\else(\Uchar\ucs\cntA)\fi}\fi
+ \advance\cntA1
+\repeat
+
+
+\typeout{\string\toucs.}
+\cntA=0
+\loop\ifnum\cntA<256
+ \ifnum0>\toucs\cntA\else\typeout{\the\cntA: \toucs\cntA}\fi
+ \advance\cntA1
+\repeat
+\typeout{\toucs"0, \toucs"80, \toucs"D7, \toucs"A7, \toucs"10000}
+\typeout{\toucs"8341, \toucs"EAA4, \toucs"EAA5}
+\typeout{\toucs"A4A2, \toucs"F4A6, \toucs"F4A7}
+\typeout{\jis"2131, \jis"213D, \jis"2141, \jis"2142, \jis"2144,
+ \jis"215D, \jis"216F, \jis"2171, \jis"2172, \jis"224C}
+\typeout{\ucs"203E, \ucs"2014, \ucs"301C, \ucs"2016, \ucs"2026,
+ \ucs"2212, \ucs"00A5, \ucs"00A2, \ucs"00A3, \ucs"00AC}
+\typeout{\ucs"FFE3, \ucs"2015, \ucs"FF5E, \ucs"2225, \ucs"22EF,
+ \ucs"FF0D, \ucs"FFE5, \ucs"FFE0, \ucs"FFE1, \ucs"FFE2}
+
+
+\bye
+
diff --git a/Build/source/texk/web2c/luatexdir/ChangeLog b/Build/source/texk/web2c/luatexdir/ChangeLog
index 6885c01f395..5e519d98d61 100644
--- a/Build/source/texk/web2c/luatexdir/ChangeLog
+++ b/Build/source/texk/web2c/luatexdir/ChangeLog
@@ -1,3 +1,12 @@
+2024-10-12 Luigi Scarso <luigi.scarso@gmail.com>
+ * Handle token combiners in immediate assignments (H.Hagen)
+ * LuaTeX 1.19.0
+
+
+2024-09-15 Luigi Scarso <luigi.scarso@gmail.com>
+ * Fixed a typo in texfont.c (thanks to Josef Friedrich)
+
+
2024-09-01 Luigi Scarso <luigi.scarso@gmail.com>
* Changed char utf8word[(4 * MAX_WORD_LEN) + 1] = { 0 };
in char utf8word[(4 * MAX_WORD_LEN) + 1] ;
diff --git a/Build/source/texk/web2c/luatexdir/font/texfont.c b/Build/source/texk/web2c/luatexdir/font/texfont.c
index 496cb0838d0..16e8a5131b9 100644
--- a/Build/source/texk/web2c/luatexdir/font/texfont.c
+++ b/Build/source/texk/web2c/luatexdir/font/texfont.c
@@ -1878,7 +1878,7 @@ void read_expand_font(void)
/*tex
- Here's an old (sort of obsolete) letterspace-a-font helper. It does so by by
+ Here's an old (sort of obsolete) letterspace-a-font helper. It does so by
creating a virtual font.
*/
diff --git a/Build/source/texk/web2c/luatexdir/luatex.c b/Build/source/texk/web2c/luatexdir/luatex.c
index 9ad8c1bf45f..11d1ad08d51 100644
--- a/Build/source/texk/web2c/luatexdir/luatex.c
+++ b/Build/source/texk/web2c/luatexdir/luatex.c
@@ -32,9 +32,9 @@
stick to "0" upto "9" so users can expect a number represented as string.
*/
-int luatex_version = 118;
-int luatex_revision = '2';
-const char *luatex_version_string = "1.18.2";
+int luatex_version = 119;
+int luatex_revision = '9';
+const char *luatex_version_string = "1.19.0";
const char *engine_name = my_name;
#include <kpathsea/c-ctype.h>
diff --git a/Build/source/texk/web2c/luatexdir/luatex_svnversion.h b/Build/source/texk/web2c/luatexdir/luatex_svnversion.h
index add4ee39419..2a64a438cb3 100644
--- a/Build/source/texk/web2c/luatexdir/luatex_svnversion.h
+++ b/Build/source/texk/web2c/luatexdir/luatex_svnversion.h
@@ -1,4 +1,4 @@
#ifndef luatex_svn_revision_h
#define luatex_svn_revision_h
-#define luatex_svn_revision 7624
+#define luatex_svn_revision 7627
#endif
diff --git a/Build/source/texk/web2c/luatexdir/tex/textoken.c b/Build/source/texk/web2c/luatexdir/tex/textoken.c
index 8fef4f5916e..6097f223200 100644
--- a/Build/source/texk/web2c/luatexdir/tex/textoken.c
+++ b/Build/source/texk/web2c/luatexdir/tex/textoken.c
@@ -882,7 +882,7 @@ void check_outer_validity(void)
halfword q;
if (suppress_outer_error_par)
return;
- if ( OK_to_interrupt && (scanner_status != normal)) {
+ if (scanner_status != normal) {
deletions_allowed = false;
/*tex
@@ -2907,7 +2907,10 @@ void conv_toks(void)
/*tex one-step do_assignment */
if (cur_cmd > max_non_prefixed_command) {
set_box_allowed = false;
- prefixed_command();
+ if (cur_cmd == combine_toks_cmd)
+ combine_the_toks();
+ else
+ prefixed_command();
set_box_allowed = true;
}
/*tex done */
@@ -2922,7 +2925,10 @@ void conv_toks(void)
break;
} else {
set_box_allowed = false;
- prefixed_command();
+ if (cur_cmd == combine_toks_cmd)
+ combine_the_toks();
+ else
+ prefixed_command();
set_box_allowed = true;
}
}
diff --git a/Build/source/texk/web2c/mplibdir/ChangeLog b/Build/source/texk/web2c/mplibdir/ChangeLog
index 728957b23e2..e06278298ac 100644
--- a/Build/source/texk/web2c/mplibdir/ChangeLog
+++ b/Build/source/texk/web2c/mplibdir/ChangeLog
@@ -1,3 +1,8 @@
+2024-10-08 Luigi Scarso <luigi.scarso@gmail.com>
+ * Fixed a typo in the svg backend that was confusing the draw attributes --
+ see metapost ml Missing stroke-linejoin attribute in SVG output for filldraw command
+ (thanks to joshua@kraemer.link).
+
2024-05-19 Luigi Scarso <luigi.scarso@gmail.com>
* Sync with https://github.com/ascherer/mplibdir commit c21f82c1990d1cdb86f51a00b5c81d0088e12454.
diff --git a/Build/source/texk/web2c/mplibdir/svgout.w b/Build/source/texk/web2c/mplibdir/svgout.w
index b1a74049582..37e72b4bcec 100644
--- a/Build/source/texk/web2c/mplibdir/svgout.w
+++ b/Build/source/texk/web2c/mplibdir/svgout.w
@@ -1098,7 +1098,7 @@ void mp_svg_stroke_out (MP mp, mp_graphic_object *h,
}
append_char(';');
}
-
+ }
if (gr_ljoin_val((mp_stroked_object *)h)!=0) {
append_string ("stroke-linejoin: ");
switch (gr_ljoin_val((mp_stroked_object *)h)) {
@@ -1114,7 +1114,7 @@ void mp_svg_stroke_out (MP mp, mp_graphic_object *h,
mp_svg_store_double(mp, gr_miterlim_val((mp_stroked_object *)h));
append_char(';');
}
- }
+
append_string("fill: ");
if (fill_also) {
diff --git a/Build/source/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog
index 2fe03aef772..92cce7d5f48 100644
--- a/Build/source/texk/web2c/ptexdir/ChangeLog
+++ b/Build/source/texk/web2c/ptexdir/ChangeLog
@@ -1,3 +1,29 @@
+2024-09-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * ptex-base.ch, ptex_version.h: Version p4.1.2.
+
+2024-09-21 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * ptex-base.ch:
+ Fix a bug in initialization of inhibit_xsp/kinsoku tables
+ (Bug introduced on commit 2022-12-12 r65248).
+ * ptex-ctrlsym.test, tests/{ptexlineendmode,ucs}.tex,
+ (chartoken,ucs-{e,s}}.log, p-lineenda.typ:
+ Add more regression tests.
+ * tests/{free_{ixsp,pena},inhibitglue,kinsoku_{search,table},
+ postpena}.tex: Move to ../euptexdir/tests .
+ * am/ptex.am: Adjust.
+
+2024-09-16 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * ptex-base.ch: Use constants enc_jis and enc_ucs.
+ * ptex-{ctrlsym,prntknj,ucs}.test,
+ tests/{control-symbol,ctrlsym,endlinechar,printkanji,ucs}.tex,
+ tests/{ctrlsym,endline,jctrlsym,pknj-{e,s},ucs-{e,s}).log,
+ tests/p-{endline,jctrlsym,pknj-{e,s}}a.typ:
+ Add regression tests by using Kitagawa-san's sample files.
+ * am/ptex.am: Adjust.
+
2024-05-18 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
* ptex-base.ch: Enable to get character codes
diff --git a/Build/source/texk/web2c/ptexdir/am/ptex.am b/Build/source/texk/web2c/ptexdir/am/ptex.am
index ee8117c6800..caf30c2f986 100644
--- a/Build/source/texk/web2c/ptexdir/am/ptex.am
+++ b/Build/source/texk/web2c/ptexdir/am/ptex.am
@@ -107,9 +107,14 @@ EXTRA_DIST += \
ptex_tests = \
ptexdir/ptriptest.test \
ptexdir/pver.test \
- ptexdir/wcfname.test
+ ptexdir/wcfname.test \
+ ptexdir/ptex-ctrlsym.test \
+ ptexdir/ptex-prntknj.test \
+ ptexdir/ptex-ucs.test
ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
-ptexdir/pver.log ptexdir/wcfname.log: ptex$(EXEEXT)
+ptexdir/pver.log ptexdir/wcfname.log \
+ ptexdir/ptex-ctrlsym.log ptexdir/ptex-prntknj.log \
+ ptexdir/ptex-ucs.log: ptex$(EXEEXT)
EXTRA_DIST += $(ptex_tests) $(pweb_tests)
DISTCLEANFILES += $(pweb_programs:=.c) $(pweb_programs:=.h) \
@@ -166,12 +171,31 @@ EXTRA_DIST += ptexdir/tests/skipjfmp.pl ptexdir/tests/skipjfmp.tfm
DISTCLEANFILES += ptests/xskipjfmp.*
## ptexdir/ptriptest
EXTRA_DIST += ptexdir/ptrip/ptrip.diffs ptexdir/ptrip/texmf.cnf
+DISTCLEANFILES += ptrip.diffs
+
+## ptex-ctrlsym.test
+EXTRA_DIST += ptexdir/tests/ctrlsym.tex ptexdir/tests/ctrlsym.log \
+ ptexdir/tests/endlinechar.tex ptexdir/tests/endline.log \
+ ptexdir/tests/control-symbol.tex ptexdir/tests/jctrlsym.log \
+ ptexdir/tests/p-endlinea.typ ptexdir/tests/p-jctrlsyma.typ \
+ ptexdir/tests/let_char_token.tex ptexdir/tests/chartoken.log \
+ ptexdir/tests/ptexlineendmode.tex ptexdir/tests/p-lineenda.typ
+DISTCLEANFILES += p-ctrlsym.log p-ctrlsym.out p-ctrlsym.tex \
+ p-endline*.* p-jctrlsym*.* p-chartoken.* p-lineend.*
+## ptex-prntknj.test
+EXTRA_DIST += ptexdir/tests/printkanji.tex \
+ ptexdir/tests/pknj-s.log ptexdir/tests/pknj-e.log \
+ ptexdir/tests/p-pknj-sa.typ ptexdir/tests/p-pknj-ea.typ
+DISTCLEANFILES += p-pknj-*.*
+## ptex-ucs.test
+EXTRA_DIST += ptexdir/tests/ucs.tex ptexdir/tests/ucs-s.log \
+ ptexdir/tests/ucs-e.log
+DISTCLEANFILES += p-ucs*.*
+
ptrip.diffs: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
$(triptrap_diffs) $@
.PHONY: ptrip-clean
ptrip-clean:
rm -rf ptripdir
-DISTCLEANFILES += ptrip.diffs
-
# (end of ptex.am)
diff --git a/Build/source/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch
index 6b77387d58e..36496b2e4b2 100644
--- a/Build/source/texk/web2c/ptexdir/ptex-base.ch
+++ b/Build/source/texk/web2c/ptexdir/ptex-base.ch
@@ -74,6 +74,8 @@
% (2022-10-24) HY pTeX p4.1.0 Add new syntax \font [in jis/ucs].
% New primitives: \tojis, \ptextracingfonts and \ptexfontname.
% (2023-09-17) HY pTeX p4.1.1 Support more than 256 different glue/kern.
+% (2024-09-22) HK pTeX p4.1.2 Enable to get character codes
+% from control symbols by using backquote.
@x
% Here is TeX material that gets inserted after \input webmac
@@ -88,8 +90,8 @@
@y
@d pTeX_version=4
@d pTeX_minor_version=1
-@d pTeX_revision==".1"
-@d pTeX_version_string=='-p4.1.1' {current \pTeX\ version}
+@d pTeX_revision==".2"
+@d pTeX_version_string=='-p4.1.2' {current \pTeX\ version}
@#
@d pTeX_banner=='This is pTeX, Version 3.141592653',pTeX_version_string
@d pTeX_banner_k==pTeX_banner
@@ -1305,10 +1307,11 @@ for k:=0 to 255 do
begin cat_code(k):=other_char; kcat_code(k):=other_kchar;
math_code(k):=hi(k); sf_code(k):=1000;
auto_xsp_code(k):=0;
+ inhibit_xsp_type(k):=0; kinsoku_type(k):=0;
end;
for k:=0 to 1023 do
- begin inhibit_xsp_code(k):=0; inhibit_xsp_type(k):=0;
- kinsoku_code(k):=0; kinsoku_type(k):=0;
+ begin inhibit_xsp_code(k):=0;
+ kinsoku_code(k):=0;
end;
@z
@x [17.232] l.4971 - pTeX: initialize cat_code, cur_jfont, cur_tfont
@@ -1523,6 +1526,9 @@ primitive("ptextracingfonts",assign_int,int_base+ptex_tracing_fonts_code);@/
@d v_offset==dimen_par(v_offset_code)
@d t_baseline_shift==dimen_par(t_baseline_shift_code)
@d y_baseline_shift==dimen_par(y_baseline_shift_code)
+@#
+@d enc_jis=1
+@d enc_ucs=2
@z
@x l.5542 - pTeX:
@@ -1660,8 +1666,8 @@ procedure print_font_dir_and_enc(f:internal_font_number);
begin
if font_dir[f]=dir_tate then print("/TATE")
else if font_dir[f]=dir_yoko then print("/YOKO");
- if font_enc[f]=2 then print("+Unicode")
- else if font_enc[f]=1 then print("+JIS");
+ if font_enc[f]=enc_ucs then print("+Unicode")
+ else if font_enc[f]=enc_jis then print("+JIS");
end;
@z
@@ -3324,9 +3330,9 @@ if jfm_flag<>dir_default then
for k:=ctype_base[f] to ctype_base[f]+nt-1 do
begin
fget; read_twentyfourx(cx);
- if jfm_enc=2 then {Unicode TFM}
+ if jfm_enc=enc_ucs then {Unicode TFM}
font_info[k].hh.rh:=toDVI(fromUCS(cx))
- else if jfm_enc=1 then {JIS-encoded TFM}
+ else if jfm_enc=enc_jis then {JIS-encoded TFM}
font_info[k].hh.rh:=toDVI(fromJIS(cx))
else
font_info[k].hh.rh:=tokanji(cx); {|kchar_code|}
@@ -3584,9 +3590,9 @@ continue:
end;
p:=link(p);
jc:=KANJI(info(p));
- if font_enc[f]=2 then {Unicode TFM}
+ if font_enc[f]=enc_ucs then {Unicode TFM}
jc:=toUCS(jc)
- else if font_enc[f]=1 then {JIS-encoded TFM}
+ else if font_enc[f]=enc_jis then {JIS-encoded TFM}
begin if toJIS(jc)=0 then char_warning_jis(f,jc);
jc:=toJIS(jc); end
else
@@ -7075,8 +7081,8 @@ exit:end;
@ @<Scan the font encoding specification@>=
begin jfm_enc:=0;
if scan_keyword_noexpand("in") then
- if scan_keyword_noexpand("jis") then jfm_enc:=1
- else if scan_keyword_noexpand("ucs") then jfm_enc:=2
+ if scan_keyword_noexpand("jis") then jfm_enc:=enc_jis
+ else if scan_keyword_noexpand("ucs") then jfm_enc:=enc_ucs
else begin
print_err("Unknown TFM encoding");
@.Unknown TFM encoding@>
diff --git a/Build/source/texk/web2c/ptexdir/ptex-ctrlsym.test b/Build/source/texk/web2c/ptexdir/ptex-ctrlsym.test
new file mode 100755
index 00000000000..ee0c5b88e8a
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/ptex-ctrlsym.test
@@ -0,0 +1,77 @@
+#! /bin/sh -vx
+# Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_ptex=$BinDir/ptex$ExeExt
+_updvitype=$BinDir/updvitype$ExeExt
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFONTS=".;$srcdir//tests"; export TEXFONTS
+TEXFORMATS=.; export TEXFORMATS
+
+rm -f p-ctrlsym.tex p-endline*.* p-jctrlsym*.* p-chartoken.* p-lineend.*
+
+if test ! -f ./p-basic.tex; then
+ cp $srcdir/tests/dump-basic.tex ./p-basic.tex
+fi
+if test ! -f ./p-basic-euc.fmt; then
+ $_ptex -ini -kanji-internal=euc -jobname=p-basic-euc p-basic || exit 2
+fi
+
+# ctrlsym.tex
+$LN_S $srcdir/ptexdir/tests/ctrlsym.tex ./p-ctrlsym.tex
+$_ptex -fmt=p-basic-euc p-ctrlsym || exit 2
+
+sed 1d p-ctrlsym.log >p-ctrlsym.out
+
+diff $srcdir/ptexdir/tests/ctrlsym.log p-ctrlsym.out || exit 3
+
+
+# endlinchar.tex
+$LN_S $srcdir/ptexdir/tests/endlinechar.tex ./p-endline.tex
+$_ptex -fmt=p-basic-euc -interaction=batchmode p-endline.tex || :
+
+sed 1d p-endline.log >p-endline.out
+
+diff $srcdir/ptexdir/tests/endline.log p-endline.out || exit 4
+
+$_updvitype ./p-endline.dvi >ptests/xp-endline.typ
+sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-endline.typ >ptests/xp-endlinea.typ
+diff $srcdir/ptexdir/tests/p-endlinea.typ ptests/xp-endlinea.typ || exit 5
+
+
+# control-symbol.tex
+$LN_S $srcdir/ptexdir/tests/control-symbol.tex ./p-jctrlsym.tex
+$_ptex -fmt=p-basic-euc -interaction=batchmode p-jctrlsym.tex || :
+
+sed 1d p-jctrlsym.log >p-jctrlsym.out
+
+diff $srcdir/ptexdir/tests/jctrlsym.log p-jctrlsym.out || exit 6
+
+$_updvitype ./p-jctrlsym.dvi >ptests/xp-jctrlsym.typ
+sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-jctrlsym.typ >ptests/xp-jctrlsyma.typ
+diff $srcdir/ptexdir/tests/p-jctrlsyma.typ ptests/xp-jctrlsyma.typ || exit 7
+
+
+# let_char_token.tex
+$LN_S $srcdir/ptexdir/tests/let_char_token.tex ./p-chartoken.tex
+$_ptex -fmt=p-basic-euc -interaction=batchmode p-chartoken.tex || :
+
+sed 1d p-chartoken.log >p-chartoken.out
+
+diff $srcdir/ptexdir/tests/chartoken.log p-chartoken.out || exit 8
+
+
+# ptexlineendmode.tex
+$LN_S $srcdir/ptexdir/tests/ptexlineendmode.tex ./p-lineend.tex
+$_ptex -fmt=p-basic-euc -kanji=utf8 -interaction=batchmode p-lineend.tex || :
+
+$_updvitype -kanji=utf8 ./p-lineend.dvi >ptests/xp-lineend.typ
+sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-lineend.typ >ptests/xp-lineenda.typ
+diff $srcdir/ptexdir/tests/p-lineenda.typ ptests/xp-lineenda.typ || exit 9
+
diff --git a/Build/source/texk/web2c/ptexdir/ptex-prntknj.test b/Build/source/texk/web2c/ptexdir/ptex-prntknj.test
new file mode 100755
index 00000000000..0f2c50f96fd
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/ptex-prntknj.test
@@ -0,0 +1,48 @@
+#! /bin/sh -vx
+# Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_ptex=$BinDir/ptex$ExeExt
+_updvitype=$BinDir/updvitype$ExeExt
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+OFMFONTS=".;$srcdir/tests"; export OFMFONTS
+TFMFONTS=".;$srcdir//tests"; export TFMFONTS
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFORMATS=.; export TEXFORMATS
+
+rm -f p-base.* p-ucs*.*
+$LN_S $srcdir/ptexdir/tests/printkanji.tex ./printkanji.tex
+
+if test ! -f ./p-basic.tex; then
+ cp $srcdir/tests/dump-basic.tex ./p-basic.tex
+fi
+if test ! -f ./p-basic-sjis.fmt; then
+ $_ptex -ini -kanji-internal=sjis -jobname=p-basic-sjis p-basic || exit 1
+fi
+if test ! -f ./p-basic-euc.fmt; then
+ $_ptex -ini -kanji-internal=euc -jobname=p-basic-euc p-basic || exit 2
+fi
+
+$_ptex -fmt=p-basic-sjis -kanji-internal=sjis -jobname=p-pknj-s -interaction=batchmode printkanji || :
+$_ptex -fmt=p-basic-euc -kanji-internal=euc -jobname=p-pknj-e -interaction=batchmode printkanji || :
+
+sed 1d p-pknj-s.log >p-pknj-s.out
+sed 1d p-pknj-e.log >p-pknj-e.out
+
+diff $srcdir/ptexdir/tests/pknj-s.log p-pknj-s.out || exit 10
+diff $srcdir/ptexdir/tests/pknj-e.log p-pknj-e.out || exit 11
+
+$_updvitype ./p-pknj-s.dvi >ptests/xp-pknj-s.typ
+$_updvitype ./p-pknj-e.dvi >ptests/xp-pknj-e.typ
+
+sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-pknj-s.typ >ptests/xp-pknj-sa.typ
+sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-pknj-e.typ >ptests/xp-pknj-ea.typ
+
+diff $srcdir/ptexdir/tests/p-pknj-sa.typ ptests/xp-pknj-sa.typ || exit 20
+diff $srcdir/ptexdir/tests/p-pknj-ea.typ ptests/xp-pknj-ea.typ || exit 21
+
diff --git a/Build/source/texk/web2c/ptexdir/ptex-ucs.test b/Build/source/texk/web2c/ptexdir/ptex-ucs.test
new file mode 100755
index 00000000000..bef8ba44910
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/ptex-ucs.test
@@ -0,0 +1,37 @@
+#! /bin/sh -vx
+# Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_ptex=$BinDir/ptex$ExeExt
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+OFMFONTS=".;$srcdir/tests"; export OFMFONTS
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFORMATS=.; export TEXFORMATS
+
+rm -f p-ucs*.*
+$LN_S $srcdir/ptexdir/tests/ucs.tex ./p-ucs.tex
+
+if test ! -f ./p-basic.tex; then
+ cp $srcdir/tests/dump-basic.tex ./p-basic.tex
+fi
+if test ! -f ./p-basic-sjis.fmt; then
+ $_ptex -ini -kanji-internal=sjis -jobname=p-basic-sjis p-basic || exit 1
+fi
+if test ! -f ./p-basic-euc.fmt; then
+ $_ptex -ini -kanji-internal=euc -jobname=p-basic-euc p-basic || exit 2
+fi
+
+$_ptex -fmt=p-basic-sjis -kanji-internal=sjis -jobname=p-ucs-s -interaction=batchmode p-ucs || exit 4
+$_ptex -fmt=p-basic-euc -kanji-internal=euc -jobname=p-ucs-e -interaction=batchmode p-ucs || exit 5
+
+sed 1d p-ucs-s.log >p-ucs-s.out
+sed 1d p-ucs-e.log >p-ucs-e.out
+
+diff $srcdir/ptexdir/tests/ucs-s.log p-ucs-s.out || exit 10
+diff $srcdir/ptexdir/tests/ucs-e.log p-ucs-e.out || exit 11
+
diff --git a/Build/source/texk/web2c/ptexdir/ptex_version.h b/Build/source/texk/web2c/ptexdir/ptex_version.h
index 13e0f1467b3..247aabb113d 100644
--- a/Build/source/texk/web2c/ptexdir/ptex_version.h
+++ b/Build/source/texk/web2c/ptexdir/ptex_version.h
@@ -1 +1 @@
-#define PTEX_VERSION "p4.1.1"
+#define PTEX_VERSION "p4.1.2"
diff --git a/Build/source/texk/web2c/ptexdir/tests/chartoken.log b/Build/source/texk/web2c/ptexdir/tests/chartoken.log
new file mode 100644
index 00000000000..e834c9cf8a3
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/chartoken.log
@@ -0,0 +1,41 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**p-chartoken.tex
+(./p-chartoken.tex
+\x=\count26
+
+! Improper alphabetic or KANJI constant.
+<to be read again>
+ \aaa
+\T #1->\x =`#1
+ \message {\the \x }
+l.6 \def\aaa{西}\T{\aaa}
+ % err
+A one-character control sequence belongs after a ` mark.
+So I'm essentially inserting \0 here.
+
+48
+! Improper alphabetic or KANJI constant.
+<to be read again>
+ \AAA
+\T #1->\x =`#1
+ \message {\the \x }
+l.7 \def\AAA{s}\T{\AAA}
+ % err
+A one-character control sequence belongs after a ` mark.
+So I'm essentially inserting \0 here.
+
+Missing character: There is no s in font nullfont!
+48
+! Improper alphabetic or KANJI constant.
+<to be read again>
+ \ccc
+\T #1->\x =`#1
+ \message {\the \x }
+l.8 \let\ccc=西\relax\T{\ccc}
+ % err
+A one-character control sequence belongs after a ` mark.
+So I'm essentially inserting \0 here.
+
+48 126 97 46273 46273 [1] )
+Output written on p-chartoken.dvi (1 page, 152 bytes).
diff --git a/Build/source/texk/web2c/ptexdir/tests/control-symbol.tex b/Build/source/texk/web2c/ptexdir/tests/control-symbol.tex
index f8127546885..be05906602d 100644
--- a/Build/source/texk/web2c/ptexdir/tests/control-symbol.tex
+++ b/Build/source/texk/web2c/ptexdir/tests/control-symbol.tex
@@ -1,5 +1,14 @@
\scrollmode
% plain TeX ソース
+\font\cmr=cmr10\cmr
+\ifx\kanjiskip\undefined\else
+ \ifnum\jis"2121="3000
+ \jfont\jpy=umin10 at 10pt\jpy
+ \else
+ \jfont\jpy=min10 at 10pt\jpy
+ \fi
+\fi
+
\def\+{A}
\def\+{A}
\def\X{\+}
@@ -95,7 +104,5 @@
4. \】 ◇, \@ ◇
-
\end
-
diff --git a/Build/source/texk/web2c/ptexdir/tests/ctrlsym.log b/Build/source/texk/web2c/ptexdir/tests/ctrlsym.log
new file mode 100644
index 00000000000..a74fd6faac3
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/ctrlsym.log
@@ -0,0 +1,11 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**p-ctrlsym
+(./p-ctrlsym.tex
+A: 49379
+
+\雪 ->snow
+B: 49379. 雪\雪snow
+macro:->snow.
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/ptexdir/tests/ctrlsym.tex b/Build/source/texk/web2c/ptexdir/tests/ctrlsym.tex
new file mode 100644
index 00000000000..d84a541707b
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/ctrlsym.tex
@@ -0,0 +1,36 @@
+% Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+% You may freely use, modify and/or distribute this file.
+%
+\ifx\fmtname\undefined
+ \input basic
+ \def\fmtname{basic}
+ \expandafter\dump
+\fi
+%==================
+\begingroup % Just there to minimize tracing output
+ \tracingmacros=2
+ \tracingonline=1
+%--
+ \newlinechar=10
+ \count255=0
+ \count255=`雪 \relax
+ \message{^^JA: \the\count255^^J}
+ \def\雪{snow}
+ \count255=`\雪 \relax
+ \message{B: \the\count255. 雪\string\雪 \雪^^J}
+ \message{\expandafter\meaning\csname 雪\endcsname.^^J}
+ \ifx\Uchar\undefined\else\message{\expandafter\meaning\csname \Uchar"96EA\endcsname.^^J}\fi%
+ \ifnum\jis"2121="3000
+ \count4095=0
+ \count4095=`🍌 \relax
+ \message{^^JC: \the\count4095^^J}
+ \def\🍌{banana}
+ \count4095=`\🍌 \relax
+ \message{D: \the\count4095. 🍌\string\🍌 \🍌^^J}
+ \message{\expandafter\meaning\csname 🍌\endcsname.^^J}
+ \ifx\Uchar\undefined\else\message{\expandafter\meaning\csname \Uchar"1F34C\endcsname.^^J}\fi%
+ \fi
+%--
+ \setbox0=\vbox{} % no dvi/xdv/pdf output
+\endgroup
+\end
diff --git a/Build/source/texk/web2c/ptexdir/tests/endline.log b/Build/source/texk/web2c/ptexdir/tests/endline.log
new file mode 100644
index 00000000000..517be160e49
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/endline.log
@@ -0,0 +1,24 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**p-endline.tex
+(./p-endline.tex
+! Undefined control sequence.
+l.29 7a\^^e3
+ ^^81^^82b\^^e3^^81^^82
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.29 7a\^^e3^^81^^82b\^^e3
+ ^^81^^82
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+[1] )
+Output written on p-endline.dvi (1 page, 232 bytes).
diff --git a/Build/source/texk/web2c/ptexdir/tests/endlinechar.tex b/Build/source/texk/web2c/ptexdir/tests/endlinechar.tex
index ef59b1fc886..5dc8de812e7 100644
--- a/Build/source/texk/web2c/ptexdir/tests/endlinechar.tex
+++ b/Build/source/texk/web2c/ptexdir/tests/endlinechar.tex
@@ -1,23 +1,23 @@
-\font\x=ecrm1000 \x
+\font\x=ec-lmr10 \x
\parindent0pt\noautoxspacing
\output{\shipout\box255}
-\def\あ{ア}
-\def\,{イ}
+\def\あ{PPP}
+\def\,{QQQ}
1a\,
-% --> 1aイ
+% --> 1aQQQ
2a\あ
-% --> 2aア
+% --> 2aPPP
\endlinechar=-1\relax
3a\,
-% --> 3aイ
+% --> 3aQQQ
% previous pTeX, upTeX: Undefined cs.
4a\あ
-% --> 4aア
+% --> 4aPPP
% prev. pTeX: Undefined cs.
5a,
@@ -36,18 +36,22 @@
\catcode"81=11\relax
\catcode"82=11\relax
8a\^^e3^^81^^82
- % --> 8aア
+ % (p3.10.0-u1.27) --> 8aPPP
+ % (p4.0.0-u1.27) --> エラー 8a
\kcatcode`あ=15\relax
9a\あ
- % == 9a\^^e3^^81^^82. --> 9aア
- \def\^^e3^^81^^82{ウ}
+ % == 9a\^^e3^^81^^82.
+ % (p3.10.0-u1.27) --> 9aPPP
+ % (p4.0.0-u1.27) --> エラー 9a
+ \def\^^e3^^81^^82{RRR}
10a\あ b\あ
- % == 10a\^^e3^^81^^82 b\^^e3^^81^^82. --> 10aウbウ
+ % == 10a\^^e3^^81^^82 b\^^e3^^81^^82. --> 10aRRRbRRR
\kcatcode12354=16\relax
11a\あ b\あ
- % == 10a\^^e3^^81^^82 b\^^e3^^81^^82. --> 11aウbウ
+ % == 11a\^^e3^^81^^82 b\^^e3^^81^^82.
+ % (p3.10.0-u1.27) --> 11aRRRbRRR
+ % (p4.0.0-u1.27) --> 11aPPPbPPP
\fi
\bye
-
diff --git a/Build/source/texk/web2c/ptexdir/tests/jctrlsym.log b/Build/source/texk/web2c/ptexdir/tests/jctrlsym.log
new file mode 100644
index 00000000000..a1e190a80df
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/jctrlsym.log
@@ -0,0 +1,42 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**p-jctrlsym.tex
+(./p-jctrlsym.tex
+■control symbol
+> \X=macro:
+->\+.
+l.27 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\+)
+> \Y=macro:
+->\+.
+l.28 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\+) ■control word
+> \X=macro:
+->\+ .
+l.39 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\+ )
+> \Y=macro:
+->\+ .
+l.40 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\+ ) ■control word
+> \X=macro:
+->\ABC .
+l.48 \show\X
+ \relax\message{(\meaning\X)}
+
+(macro:->\ABC )
+> \Y=macro:
+->\あいう .
+l.49 \show\Y
+ \relax\message{(\meaning\Y)}
+
+(macro:->\あいう ) ■行末の和文コントロールシンボル [1] )
+Output written on p-jctrlsym.dvi (1 page, 376 bytes).
diff --git a/Build/source/texk/web2c/ptexdir/tests/p-endlinea.typ b/Build/source/texk/web2c/ptexdir/tests/p-endlinea.typ
new file mode 100644
index 00000000000..31b9af3a8c3
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/p-endlinea.typ
@@ -0,0 +1,68 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 167.
+maxv=42152922, maxh=30785863, maxstackdepth=1, totalpages=1
+Font 0: ec-lmr10---loaded at size 655360 DVI units
+
+42: beginning of page 1
+87: down3 655360 v:=0+655360=655360, vv:=42
+91: push
+level 0:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+92: fntdef1 0: ec-lmr10
+116: fntnum0 current font is ec-lmr10
+117: setchar49 ("31) h:=0+327680=327680, hh:=21
+118: setchar97 ("61) h:=327680+327680=655360, hh:=42
+119: setchar81 ("51) h:=655360+509738=1165098, hh:=74
+120: setchar81 ("51) h:=1165098+509738=1674836, hh:=106
+121: setchar81 ("51) h:=1674836+509738=2184574, hh:=138
+[1aQQQ]
+122: pop
+level 0:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+123: y3 786432 v:=655360+786432=1441792, vv:=91
+127: push
+level 0:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+128: setchar50 ("32) h:=0+327680=327680, hh:=21
+129: setchar97 ("61) h:=327680+327680=655360, hh:=42
+130: setchar80 ("50) h:=655360+446005=1101365, hh:=70
+131: setchar80 ("50) h:=1101365+446005=1547370, hh:=98
+132: setchar80 ("50) h:=1547370+446005=1993375, hh:=126
+[2aPPP]
+133: pop
+level 0:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+134: y0 786432 v:=1441792+786432=2228224, vv:=141
+135: push
+level 0:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+136: setchar51 ("33) h:=0+327680=327680, hh:=21
+137: setchar97 ("61) h:=327680+327680=655360, hh:=42
+138: setchar81 ("51) h:=655360+509738=1165098, hh:=74
+139: setchar81 ("51) h:=1165098+509738=1674836, hh:=106
+140: setchar81 ("51) h:=1674836+509738=2184574, hh:=138
+141: setchar52 ("34) h:=2184574+327680=2512254, hh:=159
+142: setchar97 ("61) h:=2512254+327680=2839934, hh:=180
+143: setchar80 ("50) h:=2839934+446005=3285939, hh:=208
+144: setchar80 ("50) h:=3285939+446005=3731944, hh:=236
+145: setchar80 ("50) h:=3731944+446005=4177949, hh:=264
+146: setchar53 ("35) h:=4177949+327680=4505629, hh:=285
+147: setchar97 ("61) h:=4505629+327680=4833309, hh:=306
+148: setchar54 ("36) h:=4833309+327680=5160989, hh:=327
+149: setchar97 ("61) h:=5160989+327680=5488669, hh:=348
+150: setchar55 ("37) h:=5488669+327680=5816349, hh:=369
+151: setchar97 ("61) h:=5816349+327680=6144029, hh:=390
+[3aQQQ4aPPP5a6a7a]
+152: set1 129("81) h:=6144029+491520=6635549, hh:=421
+154: w2 -18205 h:=6635549-18205=6617344, hh:=420
+157: set1 130("82) h:=6617344+473301=7090645, hh:=450
+159: setchar98 ("62) h:=7090645+364085=7454730, hh:=473
+[b]
+160: set1 129("81) h:=7454730+491520=7946250, hh:=504
+162: w0 -18205 h:=7946250-18205=7928045, hh:=503
+163: set1 130("82) h:=7928045+473301=8401346, hh:=533
+165: pop
+level 0:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+166: eop
diff --git a/Build/source/texk/web2c/ptexdir/tests/p-jctrlsyma.typ b/Build/source/texk/web2c/ptexdir/tests/p-jctrlsyma.typ
new file mode 100644
index 00000000000..7f8a5eb1ca6
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/p-jctrlsyma.typ
@@ -0,0 +1,123 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 293.
+maxv=43725786, maxh=30785863, maxstackdepth=2, totalpages=1
+Font 1: min10 (JFM)---loaded at size 655360 DVI units
+Font 0: cmr10---loaded at size 655360 DVI units
+
+42: beginning of page 1
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+109: fntdef1 0: cmr10
+130: fntnum0 current font is cmr10
+131: setchar49 ("31) h:=1310720+327681=1638401, hh:=104
+132: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116
+133: right3 291271 h:=1820446+291271=2111717, hh:=134
+[1. ]
+137: fntdef1 1: min10
+158: fntnum1 current font is min10
+159: set2 8737("2221) type=0 h:=2111717+630598=2742315, hh:=174
+162: set2 8574("217E) type=0 h:=2742315+630598=3372913, hh:=214
+165: set2 8484("2124) type=8 h:=3372913+231778=3604691, hh:=229
+168: right3 398820 h:=3604691+398820=4003511, hh:=254
+172: set2 8737("2221) type=0 h:=4003511+630598=4634109, hh:=294
+175: set2 8574("217E) type=0 h:=4634109+630598=5264707, hh:=334
+[∡ⅾℤ ∡ⅾ]
+178: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+179: y3 786432 v:=655360+786432=1441792, vv:=91
+183: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+184: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+188: fntnum0 current font is cmr10
+189: setchar50 ("32) h:=1310720+327681=1638401, hh:=104
+190: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116
+191: right3 291271 h:=1820446+291271=2111717, hh:=134
+[2. ]
+195: fntnum1 current font is min10
+196: set2 8737("2221) type=0 h:=2111717+630598=2742315, hh:=174
+199: set2 8574("217E) type=0 h:=2742315+630598=3372913, hh:=214
+[∡ⅾ]
+202: fntnum0 current font is cmr10
+203: setchar44 ("2C) h:=3372913+182045=3554958, hh:=226
+204: right3 218453 h:=3554958+218453=3773411, hh:=239
+[, ]
+208: fntnum1 current font is min10
+209: set2 8737("2221) type=0 h:=3773411+630598=4404009, hh:=279
+212: set2 8574("217E) type=0 h:=4404009+630598=5034607, hh:=319
+[∡ⅾ]
+215: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+216: y0 786432 v:=1441792+786432=2228224, vv:=141
+217: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+218: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+222: fntnum0 current font is cmr10
+223: setchar51 ("33) h:=1310720+327681=1638401, hh:=104
+224: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116
+225: right3 291271 h:=1820446+291271=2111717, hh:=134
+[3. ]
+229: fntnum1 current font is min10
+230: set2 8737("2221) type=0 h:=2111717+630598=2742315, hh:=174
+233: set2 8574("217E) type=0 h:=2742315+630598=3372913, hh:=214
+[∡ⅾ]
+236: fntnum0 current font is cmr10
+237: setchar44 ("2C) h:=3372913+182045=3554958, hh:=226
+238: w3 218453 h:=3554958+218453=3773411, hh:=239
+[, ]
+242: fntnum1 current font is min10
+243: set2 8737("2221) type=0 h:=3773411+630598=4404009, hh:=279
+246: w0 218453 h:=4404009+218453=4622462, hh:=293
+247: set2 8574("217E) type=0 h:=4622462+630598=5253060, hh:=333
+[∡ ⅾ]
+250: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+251: y0 786432 v:=2228224+786432=3014656, vv:=191
+252: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+253: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+257: fntnum0 current font is cmr10
+258: setchar52 ("34) h:=1310720+327681=1638401, hh:=104
+259: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116
+260: right3 291271 h:=1820446+291271=2111717, hh:=134
+[4. ]
+264: fntnum1 current font is min10
+265: set2 8737("2221) type=0 h:=2111717+630598=2742315, hh:=174
+268: w3 218453 h:=2742315+218453=2960768, hh:=188
+272: set2 8574("217E) type=0 h:=2960768+630598=3591366, hh:=228
+[∡ ⅾ]
+275: fntnum0 current font is cmr10
+276: setchar44 ("2C) h:=3591366+182045=3773411, hh:=240
+277: w0 218453 h:=3773411+218453=3991864, hh:=253
+[, ]
+278: fntnum1 current font is min10
+279: set2 8737("2221) type=0 h:=3991864+630598=4622462, hh:=293
+282: w0 218453 h:=4622462+218453=4840915, hh:=307
+283: set2 8574("217E) type=0 h:=4840915+630598=5471513, hh:=347
+[∡ ⅾ]
+286: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+287: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+288: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+292: eop
diff --git a/Build/source/texk/web2c/ptexdir/tests/p-lineenda.typ b/Build/source/texk/web2c/ptexdir/tests/p-lineenda.typ
new file mode 100644
index 00000000000..368a57272ae
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/p-lineenda.typ
@@ -0,0 +1,295 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 635.
+maxv=43725786, maxh=30785863, maxstackdepth=2, totalpages=1
+Font 1: min10 (JFM)---loaded at size 655360 DVI units
+Font 0: ec-lmr10---loaded at size 655360 DVI units
+
+42: beginning of page 1
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+109: fntdef1 0: ec-lmr10
+133: fntnum0 current font is ec-lmr10
+134: setchar48 ("30) h:=1310720+327680=1638400, hh:=104
+[0]
+135: fntdef1 1: min10
+156: fntnum1 current font is min10
+157: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144
+160: set2 8737("2221) type=0 h:=2268998+630598=2899596, hh:=184
+163: set2 8574("217E) type=0 h:=2899596+630598=3530194, hh:=224
+166: set2 9250("2422) type=0 h:=3530194+630598=4160792, hh:=264
+169: set2 8574("217E) type=0 h:=4160792+630598=4791390, hh:=304
+172: set2 9252("2424) type=0 h:=4791390+630598=5421988, hh:=344
+175: set2 8737("2221) type=0 h:=5421988+630598=6052586, hh:=384
+178: set2 8574("217E) type=0 h:=6052586+630598=6683184, hh:=424
+181: set2 8737("2221) type=0 h:=6683184+630598=7313782, hh:=464
+184: set2 8574("217E) type=0 h:=7313782+630598=7944380, hh:=504
+187: set2 13377("3441) type=0 h:=7944380+630598=8574978, hh:=544
+190: set2 15226("3B7A) type=0 h:=8574978+630598=9205576, hh:=584
+[◆◆◇あ◇い◆◇◆◇漢字]
+193: fntnum0 current font is ec-lmr10
+194: setchar83 ("53) h:=9205576+364085=9569661, hh:=607
+195: setchar97 ("61) h:=9569661+327680=9897341, hh:=628
+196: right3 655360 h:=9897341+655360=10552701, hh:=668
+200: setchar112 ("70) h:=10552701+364085=10916786, hh:=691
+201: setchar52 ("34) h:=10916786+327680=11244466, hh:=712
+202: setchar46 ("2E) h:=11244466+182043=11426509, hh:=724
+203: setchar48 ("30) h:=11426509+327680=11754189, hh:=745
+204: setchar46 ("2E) h:=11754189+182043=11936232, hh:=757
+205: setchar48 ("30) h:=11936232+327680=12263912, hh:=778
+[Sa p4.0.0]
+206: fntnum1 current font is min10
+207: set2 12362("304A) type=0 h:=12263912+630598=12894510, hh:=818
+210: set2 14687("395F) type=0 h:=12894510+630598=13525108, hh:=858
+[以降]
+213: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+214: y3 786432 v:=655360+786432=1441792, vv:=91
+218: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+219: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+223: fntnum0 current font is ec-lmr10
+224: setchar49 ("31) h:=1310720+327680=1638400, hh:=104
+[1]
+225: fntnum1 current font is min10
+226: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144
+229: set2 8737("2221) type=0 h:=2268998+630598=2899596, hh:=184
+232: set2 8574("217E) type=0 h:=2899596+630598=3530194, hh:=224
+235: set2 9250("2422) type=0 h:=3530194+630598=4160792, hh:=264
+238: set2 8574("217E) type=0 h:=4160792+630598=4791390, hh:=304
+241: set2 9252("2424) type=0 h:=4791390+630598=5421988, hh:=344
+244: set2 8737("2221) type=0 h:=5421988+630598=6052586, hh:=384
+247: set2 8574("217E) type=0 h:=6052586+630598=6683184, hh:=424
+250: right3 218453 h:=6683184+218453=6901637, hh:=437
+254: set2 8737("2221) type=0 h:=6901637+630598=7532235, hh:=477
+257: set2 8574("217E) type=0 h:=7532235+630598=8162833, hh:=517
+260: set2 13377("3441) type=0 h:=8162833+630598=8793431, hh:=557
+263: set2 15226("3B7A) type=0 h:=8793431+630598=9424029, hh:=597
+[◆◆◇あ◇い◆◇ ◆◇漢字]
+266: fntnum0 current font is ec-lmr10
+267: setchar83 ("53) h:=9424029+364085=9788114, hh:=620
+268: setchar97 ("61) h:=9788114+327680=10115794, hh:=641
+269: right3 655360 h:=10115794+655360=10771154, hh:=682
+273: setchar112 ("70) h:=10771154+364085=11135239, hh:=705
+274: setchar51 ("33) h:=11135239+327680=11462919, hh:=726
+275: setchar46 ("2E) h:=11462919+182043=11644962, hh:=738
+276: setchar56 ("38) h:=11644962+327680=11972642, hh:=759
+277: setchar46 ("2E) h:=11972642+182043=12154685, hh:=771
+278: setchar50 ("32) h:=12154685+327680=12482365, hh:=792
+[Sa p3.8.2]
+279: fntnum1 current font is min10
+280: set2 12362("304A) type=0 h:=12482365+630598=13112963, hh:=832
+283: set2 14687("395F) type=0 h:=13112963+630598=13743561, hh:=872
+[以降]
+286: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+287: y0 786432 v:=1441792+786432=2228224, vv:=141
+288: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+289: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+293: fntnum0 current font is ec-lmr10
+294: setchar50 ("32) h:=1310720+327680=1638400, hh:=104
+[2]
+295: fntnum1 current font is min10
+296: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144
+299: set2 8737("2221) type=0 h:=2268998+630598=2899596, hh:=184
+302: set2 8574("217E) type=0 h:=2899596+630598=3530194, hh:=224
+305: w3 218453 h:=3530194+218453=3748647, hh:=237
+309: set2 9250("2422) type=0 h:=3748647+630598=4379245, hh:=277
+312: set2 8574("217E) type=0 h:=4379245+630598=5009843, hh:=317
+315: w0 218453 h:=5009843+218453=5228296, hh:=331
+316: set2 9252("2424) type=0 h:=5228296+630598=5858894, hh:=371
+319: set2 8737("2221) type=0 h:=5858894+630598=6489492, hh:=411
+322: set2 8574("217E) type=0 h:=6489492+630598=7120090, hh:=451
+325: set2 8737("2221) type=0 h:=7120090+630598=7750688, hh:=491
+328: set2 8574("217E) type=0 h:=7750688+630598=8381286, hh:=531
+331: set2 13377("3441) type=0 h:=8381286+630598=9011884, hh:=571
+334: set2 15226("3B7A) type=0 h:=9011884+630598=9642482, hh:=611
+[◆◆◇ あ◇ い◆◇◆◇漢字]
+337: fntnum0 current font is ec-lmr10
+338: setchar83 ("53) h:=9642482+364085=10006567, hh:=634
+339: setchar97 ("61) h:=10006567+327680=10334247, hh:=655
+[Sa]
+340: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+341: y0 786432 v:=2228224+786432=3014656, vv:=191
+342: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+343: right3 1310720 h:=0+1310720=1310720, hh:=83
+347: setchar51 ("33) h:=1310720+327680=1638400, hh:=104
+[ 3]
+348: fntnum1 current font is min10
+349: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144
+352: set2 8737("2221) type=0 h:=2268998+630598=2899596, hh:=184
+355: set2 8574("217E) type=0 h:=2899596+630598=3530194, hh:=224
+358: w3 218453 h:=3530194+218453=3748647, hh:=237
+362: set2 9250("2422) type=0 h:=3748647+630598=4379245, hh:=277
+365: set2 8574("217E) type=0 h:=4379245+630598=5009843, hh:=317
+368: w0 218453 h:=5009843+218453=5228296, hh:=331
+369: set2 9252("2424) type=0 h:=5228296+630598=5858894, hh:=371
+372: set2 8737("2221) type=0 h:=5858894+630598=6489492, hh:=411
+375: set2 8574("217E) type=0 h:=6489492+630598=7120090, hh:=451
+378: w0 218453 h:=7120090+218453=7338543, hh:=465
+379: set2 8737("2221) type=0 h:=7338543+630598=7969141, hh:=505
+382: set2 8574("217E) type=0 h:=7969141+630598=8599739, hh:=545
+385: set2 13377("3441) type=0 h:=8599739+630598=9230337, hh:=585
+388: set2 15226("3B7A) type=0 h:=9230337+630598=9860935, hh:=625
+[◆◆◇ あ◇ い◆◇ ◆◇漢字]
+391: fntnum0 current font is ec-lmr10
+392: setchar83 ("53) h:=9860935+364085=10225020, hh:=648
+393: setchar97 ("61) h:=10225020+327680=10552700, hh:=669
+394: right3 655360 h:=10552700+655360=11208060, hh:=710
+398: setchar112 ("70) h:=11208060+364085=11572145, hh:=733
+399: setchar51 ("33) h:=11572145+327680=11899825, hh:=754
+400: setchar46 ("2E) h:=11899825+182043=12081868, hh:=766
+401: setchar56 ("38) h:=12081868+327680=12409548, hh:=787
+402: setchar46 ("2E) h:=12409548+182043=12591591, hh:=799
+403: setchar49 ("31) h:=12591591+327680=12919271, hh:=820
+[Sa p3.8.1]
+404: fntnum1 current font is min10
+405: set2 12362("304A) type=0 h:=12919271+630598=13549869, hh:=860
+408: set2 16688("4130) type=0 h:=13549869+630598=14180467, hh:=900
+[以前]
+411: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+412: y0 786432 v:=3014656+786432=3801088, vv:=241
+413: push
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+414: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+418: fntnum0 current font is ec-lmr10
+419: setchar52 ("34) h:=1310720+327680=1638400, hh:=104
+[4]
+420: fntnum1 current font is min10
+421: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144
+424: w3 218453 h:=2268998+218453=2487451, hh:=158
+428: set2 8737("2221) type=0 h:=2487451+630598=3118049, hh:=198
+431: set2 8574("217E) type=0 h:=3118049+630598=3748647, hh:=238
+434: set2 9250("2422) type=0 h:=3748647+630598=4379245, hh:=278
+437: set2 8574("217E) type=0 h:=4379245+630598=5009843, hh:=318
+440: w0 218453 h:=5009843+218453=5228296, hh:=331
+441: set2 9252("2424) type=0 h:=5228296+630598=5858894, hh:=371
+444: set2 8737("2221) type=0 h:=5858894+630598=6489492, hh:=411
+447: set2 8574("217E) type=0 h:=6489492+630598=7120090, hh:=451
+450: set2 8737("2221) type=0 h:=7120090+630598=7750688, hh:=491
+453: set2 8574("217E) type=0 h:=7750688+630598=8381286, hh:=531
+456: set2 13377("3441) type=0 h:=8381286+630598=9011884, hh:=571
+459: set2 15226("3B7A) type=0 h:=9011884+630598=9642482, hh:=611
+[◆ ◆◇あ◇ い◆◇◆◇漢字]
+462: fntnum0 current font is ec-lmr10
+463: setchar83 ("53) h:=9642482+364085=10006567, hh:=634
+464: setchar97 ("61) h:=10006567+327680=10334247, hh:=655
+[Sa]
+465: pop
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+466: y0 786432 v:=3801088+786432=4587520, vv:=291
+467: push
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+468: right3 1310720 h:=0+1310720=1310720, hh:=83
+472: setchar53 ("35) h:=1310720+327680=1638400, hh:=104
+[ 5]
+473: fntnum1 current font is min10
+474: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144
+477: w3 218453 h:=2268998+218453=2487451, hh:=158
+481: set2 8737("2221) type=0 h:=2487451+630598=3118049, hh:=198
+484: set2 8574("217E) type=0 h:=3118049+630598=3748647, hh:=238
+487: set2 9250("2422) type=0 h:=3748647+630598=4379245, hh:=278
+490: set2 8574("217E) type=0 h:=4379245+630598=5009843, hh:=318
+493: w0 218453 h:=5009843+218453=5228296, hh:=331
+494: set2 9252("2424) type=0 h:=5228296+630598=5858894, hh:=371
+497: set2 8737("2221) type=0 h:=5858894+630598=6489492, hh:=411
+500: set2 8574("217E) type=0 h:=6489492+630598=7120090, hh:=451
+503: w0 218453 h:=7120090+218453=7338543, hh:=465
+504: set2 8737("2221) type=0 h:=7338543+630598=7969141, hh:=505
+507: set2 8574("217E) type=0 h:=7969141+630598=8599739, hh:=545
+510: set2 13377("3441) type=0 h:=8599739+630598=9230337, hh:=585
+513: set2 15226("3B7A) type=0 h:=9230337+630598=9860935, hh:=625
+[◆ ◆◇あ◇ い◆◇ ◆◇漢字]
+516: fntnum0 current font is ec-lmr10
+517: setchar83 ("53) h:=9860935+364085=10225020, hh:=648
+518: setchar97 ("61) h:=10225020+327680=10552700, hh:=669
+[Sa]
+519: pop
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+520: y0 786432 v:=4587520+786432=5373952, vv:=340
+521: push
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+522: right3 1310720 h:=0+1310720=1310720, hh:=83
+526: setchar54 ("36) h:=1310720+327680=1638400, hh:=104
+[ 6]
+527: fntnum1 current font is min10
+528: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144
+531: w3 218453 h:=2268998+218453=2487451, hh:=158
+535: set2 8737("2221) type=0 h:=2487451+630598=3118049, hh:=198
+538: set2 8574("217E) type=0 h:=3118049+630598=3748647, hh:=238
+541: w0 218453 h:=3748647+218453=3967100, hh:=251
+542: set2 9250("2422) type=0 h:=3967100+630598=4597698, hh:=291
+545: set2 8574("217E) type=0 h:=4597698+630598=5228296, hh:=331
+548: w0 218453 h:=5228296+218453=5446749, hh:=345
+549: set2 9252("2424) type=0 h:=5446749+630598=6077347, hh:=385
+552: set2 8737("2221) type=0 h:=6077347+630598=6707945, hh:=425
+555: set2 8574("217E) type=0 h:=6707945+630598=7338543, hh:=465
+558: set2 8737("2221) type=0 h:=7338543+630598=7969141, hh:=505
+561: set2 8574("217E) type=0 h:=7969141+630598=8599739, hh:=545
+564: set2 13377("3441) type=0 h:=8599739+630598=9230337, hh:=585
+567: set2 15226("3B7A) type=0 h:=9230337+630598=9860935, hh:=625
+[◆ ◆◇ あ◇ い◆◇◆◇漢字]
+570: fntnum0 current font is ec-lmr10
+571: setchar83 ("53) h:=9860935+364085=10225020, hh:=648
+572: setchar97 ("61) h:=10225020+327680=10552700, hh:=669
+[Sa]
+573: pop
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+574: y0 786432 v:=5373952+786432=6160384, vv:=390
+575: push
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+576: right3 1310720 h:=0+1310720=1310720, hh:=83
+580: setchar55 ("37) h:=1310720+327680=1638400, hh:=104
+[ 7]
+581: fntnum1 current font is min10
+582: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144
+585: w3 218453 h:=2268998+218453=2487451, hh:=158
+589: set2 8737("2221) type=0 h:=2487451+630598=3118049, hh:=198
+592: set2 8574("217E) type=0 h:=3118049+630598=3748647, hh:=238
+595: w0 218453 h:=3748647+218453=3967100, hh:=251
+596: set2 9250("2422) type=0 h:=3967100+630598=4597698, hh:=291
+599: set2 8574("217E) type=0 h:=4597698+630598=5228296, hh:=331
+602: w0 218453 h:=5228296+218453=5446749, hh:=345
+603: set2 9252("2424) type=0 h:=5446749+630598=6077347, hh:=385
+606: set2 8737("2221) type=0 h:=6077347+630598=6707945, hh:=425
+609: set2 8574("217E) type=0 h:=6707945+630598=7338543, hh:=465
+612: w0 218453 h:=7338543+218453=7556996, hh:=479
+613: set2 8737("2221) type=0 h:=7556996+630598=8187594, hh:=519
+616: set2 8574("217E) type=0 h:=8187594+630598=8818192, hh:=559
+619: set2 13377("3441) type=0 h:=8818192+630598=9448790, hh:=599
+622: set2 15226("3B7A) type=0 h:=9448790+630598=10079388, hh:=639
+[◆ ◆◇ あ◇ い◆◇ ◆◇漢字]
+625: fntnum0 current font is ec-lmr10
+626: setchar83 ("53) h:=10079388+364085=10443473, hh:=662
+627: setchar97 ("61) h:=10443473+327680=10771153, hh:=683
+[Sa]
+628: pop
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+629: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+630: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+634: eop
diff --git a/Build/source/texk/web2c/ptexdir/tests/p-pknj-ea.typ b/Build/source/texk/web2c/ptexdir/tests/p-pknj-ea.typ
new file mode 100644
index 00000000000..cf8d08f7715
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/p-pknj-ea.typ
@@ -0,0 +1,825 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 1055.
+maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1
+Font 1: min10 (JFM)---loaded at size 655360 DVI units
+Font 0: ec-lmr10---loaded at size 655360 DVI units
+
+42: beginning of page 50623
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+109: fntdef1 0: ec-lmr10
+133: fntnum0 current font is ec-lmr10
+134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114
+135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126
+136: w3 218453 h:=1984283+218453=2202736, hh:=140
+[A: ]
+140: set1 197("C5) h:=2202736+491520=2694256, hh:=171
+142: set1 191("BF) h:=2694256+491520=3185776, hh:=202
+144: w0 218453 h:=3185776+218453=3404229, hh:=216
+[ ]
+145: set1 197("C5) h:=3404229+491520=3895749, hh:=247
+147: set1 191("BF) h:=3895749+491520=4387269, hh:=278
+149: w0 218453 h:=4387269+218453=4605722, hh:=292
+[ ]
+150: fntdef1 1: min10
+171: fntnum1 current font is min10
+172: set2 17727("453F) type=0 h:=4605722+630598=5236320, hh:=332
+[䔿]
+175: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+176: y3 786432 v:=655360+786432=1441792, vv:=91
+180: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+181: push
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+182: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+185: pop
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+186: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+190: fntnum0 current font is ec-lmr10
+191: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+192: setchar109 ("6D) h:=958278+546111=1504389, hh:=96
+193: setchar101 ("65) h:=1504389+291275=1795664, hh:=114
+194: setchar97 ("61) h:=1795664+327680=2123344, hh:=135
+195: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158
+196: setchar105 ("69) h:=2487429+182043=2669472, hh:=170
+197: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193
+198: setchar103 ("67) h:=3033557+327680=3361237, hh:=214
+199: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226
+[\meaning.]
+200: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+201: y0 786432 v:=1441792+786432=2228224, vv:=141
+202: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+203: right3 1310720 h:=0+1310720=1310720, hh:=83
+207: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+208: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+209: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+210: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+211: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+212: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+213: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+214: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+215: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287
+216: setchar97 ("61) h:=4516494+327680=4844174, hh:=308
+217: setchar99 ("63) h:=4844174+291275=5135449, hh:=326
+218: setchar114 ("72) h:=5135449+256683=5392132, hh:=342
+219: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363
+220: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375
+221: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389
+222: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421
+[ macro:->macro:->]
+223: set1 197("C5) h:=6630046+491520=7121566, hh:=452
+225: set1 191("BF) h:=7121566+491520=7613086, hh:=483
+227: w3 218453 h:=7613086+218453=7831539, hh:=496
+[ ]
+231: set1 197("C5) h:=7831539+491520=8323059, hh:=527
+233: set1 191("BF) h:=8323059+491520=8814579, hh:=558
+235: w0 218453 h:=8814579+218453=9033032, hh:=572
+[ ]
+236: fntnum1 current font is min10
+237: set2 17727("453F) type=0 h:=9033032+630598=9663630, hh:=612
+[䔿]
+240: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+241: y0 786432 v:=2228224+786432=3014656, vv:=191
+242: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+243: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+247: fntnum0 current font is ec-lmr10
+248: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+249: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+250: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+251: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+252: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+253: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+254: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+255: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+[macro:->]
+256: set1 197("C5) h:=3970383+491520=4461903, hh:=283
+258: set1 191("BF) h:=4461903+491520=4953423, hh:=314
+260: w3 218453 h:=4953423+218453=5171876, hh:=328
+[ ]
+264: set1 197("C5) h:=5171876+491520=5663396, hh:=359
+266: set1 191("BF) h:=5663396+491520=6154916, hh:=390
+268: w0 218453 h:=6154916+218453=6373369, hh:=404
+[ ]
+269: fntnum1 current font is min10
+270: set2 17727("453F) type=0 h:=6373369+630598=7003967, hh:=444
+[䔿]
+273: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+274: y0 786432 v:=3014656+786432=3801088, vv:=241
+275: push
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+276: push
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+277: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+280: pop
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+281: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+285: fntnum0 current font is ec-lmr10
+286: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+287: setchar106 ("6A) h:=958278+200245=1158523, hh:=74
+288: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95
+289: setchar98 ("62) h:=1486203+364085=1850288, hh:=118
+290: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141
+291: setchar97 ("61) h:=2214373+327680=2542053, hh:=162
+292: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197
+293: setchar101 ("65) h:=3088164+291275=3379439, hh:=215
+294: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227
+[\jobname.]
+295: pop
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+296: y0 786432 v:=3801088+786432=4587520, vv:=291
+297: push
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+298: push
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+299: fntnum1 current font is min10
+300: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+303: pop
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+304: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+308: fntnum0 current font is ec-lmr10
+309: setchar111 ("6F) h:=630598+327680=958278, hh:=61
+310: setchar110 ("6E) h:=958278+364085=1322363, hh:=84
+311: setchar101 ("65) h:=1322363+291275=1613638, hh:=102
+312: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114
+313: setchar101 ("65) h:=1795681+291275=2086956, hh:=132
+314: setchar116 ("74) h:=2086956+254870=2341826, hh:=148
+315: setchar116 ("74) h:=2341826+254870=2596696, hh:=164
+316: setchar101 ("65) h:=2596696+291275=2887971, hh:=182
+317: setchar114 ("72) h:=2887971+256683=3144654, hh:=198
+318: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210
+[oneletter.]
+319: pop
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+320: y0 786432 v:=4587520+786432=5373952, vv:=340
+321: push
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+322: right3 1310720 h:=0+1310720=1310720, hh:=83
+326: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+327: set1 196("C4) h:=1638400+491520=2129920, hh:=135
+329: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147
+330: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168
+[.\]
+331: set1 197("C5) h:=2639643+491520=3131163, hh:=199
+333: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211
+334: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232
+[.\]
+335: set1 255("FF) h:=3640886+327680=3968566, hh:=253
+337: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265
+338: right3 291271 h:=4150609+291271=4441880, hh:=281
+[. ]
+342: set1 191("BF) h:=4441880+491520=4933400, hh:=312
+344: pop
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+345: y0 786432 v:=5373952+786432=6160384, vv:=390
+346: push
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+347: push
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+348: fntnum1 current font is min10
+349: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+352: pop
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+353: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+357: fntnum0 current font is ec-lmr10
+358: setchar99 ("63) h:=630598+291275=921873, hh:=58
+359: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+360: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+361: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+362: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+363: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+364: setchar49 ("31) h:=2709530+327680=3037210, hh:=192
+365: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname1.]
+366: pop
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+367: y0 786432 v:=6160384+786432=6946816, vv:=440
+368: push
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+369: right3 1310720 h:=0+1310720=1310720, hh:=83
+373: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+374: set1 197("C5) h:=1638400+491520=2129920, hh:=135
+376: set1 191("BF) h:=2129920+491520=2621440, hh:=166
+378: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187
+[\]
+379: set1 197("C5) h:=2949120+491520=3440640, hh:=218
+381: set1 191("BF) h:=3440640+491520=3932160, hh:=249
+383: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261
+384: w3 218453 h:=4114203+218453=4332656, hh:=274
+388: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295
+[, \]
+389: set1 197("C5) h:=4660336+491520=5151856, hh:=326
+391: set1 191("BF) h:=5151856+491520=5643376, hh:=357
+393: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369
+394: w0 218453 h:=5825419+218453=6043872, hh:=383
+395: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404
+[, \]
+396: fntnum1 current font is min10
+397: set2 17727("453F) type=0 h:=6371552+630598=7002150, hh:=444
+[䔿]
+400: pop
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+401: y0 786432 v:=6946816+786432=7733248, vv:=490
+402: push
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+403: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+407: fntnum0 current font is ec-lmr10
+408: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[\]
+409: fntnum1 current font is min10
+410: set2 9250("2422) type=0 h:=1638400+630598=2268998, hh:=144
+[␢]
+413: fntnum0 current font is ec-lmr10
+414: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176
+415: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208
+416: right3 218453 h:=3288474+218453=3506927, hh:=222
+420: setchar104 ("68) h:=3506927+364085=3871012, hh:=245
+421: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266
+422: setchar103 ("67) h:=4198692+327680=4526372, hh:=287
+423: setchar101 ("65) h:=4526372+291275=4817647, hh:=305
+424: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317
+[=> hoge,]
+425: pop
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+426: y0 786432 v:=7733248+786432=8519680, vv:=540
+427: push
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+428: right3 1310720 h:=0+1310720=1310720, hh:=83
+432: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+433: set1 164("A4) h:=1638400+364085=2002485, hh:=127
+435: set1 162("A2) h:=2002485+291275=2293760, hh:=145
+437: setchar61 ("3D) h:=2293760+509738=2803498, hh:=177
+438: setchar62 ("3E) h:=2803498+509738=3313236, hh:=209
+439: right3 218453 h:=3313236+218453=3531689, hh:=224
+443: setchar112 ("70) h:=3531689+364085=3895774, hh:=247
+444: setchar105 ("69) h:=3895774+182043=4077817, hh:=259
+445: setchar121 ("79) h:=4077817+345898=4423715, hh:=281
+446: right2 -18205 h:=4423715-18205=4405510, hh:=280
+449: setchar111 ("6F) h:=4405510+327680=4733190, hh:=301
+450: setchar44 ("2C) h:=4733190+182043=4915233, hh:=313
+[=> piyo,]
+451: pop
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+452: y0 786432 v:=8519680+786432=9306112, vv:=589
+453: push
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+454: right3 1310720 h:=0+1310720=1310720, hh:=83
+458: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+459: set1 164("A4) h:=1638400+364085=2002485, hh:=127
+461: set1 162("A2) h:=2002485+291275=2293760, hh:=145
+463: setchar61 ("3D) h:=2293760+509738=2803498, hh:=177
+464: setchar62 ("3E) h:=2803498+509738=3313236, hh:=209
+465: right3 218453 h:=3313236+218453=3531689, hh:=224
+469: setchar112 ("70) h:=3531689+364085=3895774, hh:=247
+470: setchar105 ("69) h:=3895774+182043=4077817, hh:=259
+471: setchar121 ("79) h:=4077817+345898=4423715, hh:=281
+472: right2 -18205 h:=4423715-18205=4405510, hh:=280
+475: setchar111 ("6F) h:=4405510+327680=4733190, hh:=301
+476: setchar46 ("2E) h:=4733190+182043=4915233, hh:=313
+[=> piyo.]
+477: pop
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+478: y0 786432 v:=9306112+786432=10092544, vv:=639
+479: push
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+480: push
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+481: fntnum1 current font is min10
+482: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+485: pop
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+486: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+490: fntnum0 current font is ec-lmr10
+491: setchar48 ("30) h:=630598+327680=958278, hh:=61
+492: setchar120 ("78) h:=958278+345898=1304176, hh:=83
+493: setchar70 ("46) h:=1304176+427818=1731994, hh:=110
+494: setchar70 ("46) h:=1731994+427818=2159812, hh:=137
+495: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149
+[0xFF.]
+496: pop
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+497: y0 786432 v:=10092544+786432=10878976, vv:=689
+498: push
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+499: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+503: fntnum1 current font is min10
+504: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[␢]
+507: fntnum0 current font is ec-lmr10
+508: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+509: w3 218453 h:=2123361+218453=2341814, hh:=148
+513: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+514: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+515: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+517: set1 197("C5) h:=3252044+491520=3743564, hh:=237
+519: set1 255("FF) h:=3743564+327680=4071244, hh:=258
+521: set1 191("BF) h:=4071244+491520=4562764, hh:=289
+523: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301
+524: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336
+525: setchar97 ("61) h:=5290918+327680=5618598, hh:=357
+526: setchar99 ("63) h:=5618598+291275=5909873, hh:=375
+527: setchar114 ("72) h:=5909873+256683=6166556, hh:=391
+528: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412
+529: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424
+530: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438
+531: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470
+[:macro:->]
+532: fntnum1 current font is min10
+533: set2 9250("2422) type=0 h:=7404470+630598=8035068, hh:=510
+[␢]
+536: fntnum0 current font is ec-lmr10
+537: setchar41 ("29) h:=8035068+254870=8289938, hh:=526
+538: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538
+539: w0 218453 h:=8471981+218453=8690434, hh:=550
+540: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571
+[), \]
+541: set1 255("FF) h:=9018114+327680=9345794, hh:=592
+543: set1 197("C5) h:=9345794+491520=9837314, hh:=623
+545: set1 255("FF) h:=9837314+327680=10164994, hh:=644
+547: set1 191("BF) h:=10164994+491520=10656514, hh:=675
+549: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687
+550: w0 218453 h:=10838557+218453=11057010, hh:=700
+551: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735
+552: setchar97 ("61) h:=11603121+327680=11930801, hh:=756
+553: setchar99 ("63) h:=11930801+291275=12222076, hh:=774
+554: setchar114 ("72) h:=12222076+256683=12478759, hh:=790
+555: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811
+556: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823
+557: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837
+558: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869
+559: setchar40 ("28) h:=13716673+254870=13971543, hh:=885
+560: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906
+[, macro:->(\]
+561: set1 255("FF) h:=14299223+327680=14626903, hh:=927
+563: set1 197("C5) h:=14626903+491520=15118423, hh:=958
+565: set1 255("FF) h:=15118423+327680=15446103, hh:=979
+567: set1 191("BF) h:=15446103+491520=15937623, hh:=1010
+569: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022
+570: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057
+571: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078
+572: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096
+573: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112
+574: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133
+575: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145
+576: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159
+577: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191
+[:macro:->]
+578: fntnum1 current font is min10
+579: set2 9250("2422) type=0 h:=18779329+630598=19409927, hh:=1231
+[␢]
+582: fntnum0 current font is ec-lmr10
+583: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247
+584: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259
+[).]
+585: pop
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+586: y0 786432 v:=10878976+786432=11665408, vv:=739
+587: push
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+588: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+592: fntnum1 current font is min10
+593: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123
+[␤]
+596: fntnum0 current font is ec-lmr10
+597: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+598: w3 218453 h:=2123361+218453=2341814, hh:=148
+602: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+603: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+604: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+606: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218
+607: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253
+608: setchar97 ("61) h:=3980198+327680=4307878, hh:=274
+609: setchar99 ("63) h:=4307878+291275=4599153, hh:=292
+610: setchar114 ("72) h:=4599153+256683=4855836, hh:=308
+611: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329
+612: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341
+613: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355
+614: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387
+[:macro:->]
+615: fntnum1 current font is min10
+616: set2 9252("2424) type=0 h:=6093750+630598=6724348, hh:=427
+[␤]
+619: fntnum0 current font is ec-lmr10
+620: setchar41 ("29) h:=6724348+254870=6979218, hh:=443
+621: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455
+622: w0 218453 h:=7161261+218453=7379714, hh:=467
+623: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488
+[), \]
+624: set1 255("FF) h:=7707394+327680=8035074, hh:=509
+626: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521
+627: w0 218453 h:=8217117+218453=8435570, hh:=534
+628: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569
+629: setchar97 ("61) h:=8981681+327680=9309361, hh:=590
+630: setchar99 ("63) h:=9309361+291275=9600636, hh:=608
+631: setchar114 ("72) h:=9600636+256683=9857319, hh:=624
+632: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645
+633: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657
+634: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671
+635: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703
+636: setchar40 ("28) h:=11095233+254870=11350103, hh:=719
+637: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740
+[, macro:->(\]
+638: set1 255("FF) h:=11677783+327680=12005463, hh:=761
+640: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773
+641: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808
+642: setchar97 ("61) h:=12733617+327680=13061297, hh:=829
+643: setchar99 ("63) h:=13061297+291275=13352572, hh:=847
+644: setchar114 ("72) h:=13352572+256683=13609255, hh:=863
+645: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884
+646: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896
+647: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910
+648: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942
+[:macro:->]
+649: fntnum1 current font is min10
+650: set2 9252("2424) type=0 h:=14847169+630598=15477767, hh:=982
+[␤]
+653: fntnum0 current font is ec-lmr10
+654: setchar41 ("29) h:=15477767+254870=15732637, hh:=998
+655: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010
+[).]
+656: pop
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+657: y0 786432 v:=11665408+786432=12451840, vv:=789
+658: push
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+659: push
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+660: fntnum1 current font is min10
+661: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+664: pop
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+665: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+669: fntnum0 current font is ec-lmr10
+670: setchar99 ("63) h:=630598+291275=921873, hh:=58
+671: setchar111 ("6F) h:=921873+327680=1249553, hh:=79
+672: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102
+673: right2 -18205 h:=1613638-18205=1595433, hh:=101
+676: setchar116 ("74) h:=1595433+254870=1850303, hh:=117
+677: setchar101 ("65) h:=1850303+291275=2141578, hh:=135
+678: setchar120 ("78) h:=2141578+345898=2487476, hh:=157
+679: setchar116 ("74) h:=2487476+254870=2742346, hh:=173
+680: setchar115 ("73) h:=2742346+258506=3000852, hh:=189
+681: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201
+[contexts.]
+682: pop
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+683: y0 786432 v:=12451840+786432=13238272, vv:=839
+684: push
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+685: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+689: fntnum1 current font is min10
+690: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[␢]
+693: fntnum0 current font is ec-lmr10
+694: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+696: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+698: w3 218453 h:=2924358+218453=3142811, hh:=199
+702: setchar97 ("61) h:=3142811+327680=3470491, hh:=220
+[ a]
+703: set1 197("C5) h:=3470491+491520=3962011, hh:=251
+705: set1 191("BF) h:=3962011+491520=4453531, hh:=282
+707: w0 218453 h:=4453531+218453=4671984, hh:=296
+[ ]
+708: set1 197("C5) h:=4671984+491520=5163504, hh:=327
+710: set1 191("BF) h:=5163504+491520=5655024, hh:=358
+712: w0 218453 h:=5655024+218453=5873477, hh:=372
+[ ]
+713: fntnum1 current font is min10
+714: set2 17727("453F) type=0 h:=5873477+630598=6504075, hh:=412
+717: w0 218453 h:=6504075+218453=6722528, hh:=426
+[䔿 ]
+718: fntnum0 current font is ec-lmr10
+719: set1 197("C5) h:=6722528+491520=7214048, hh:=457
+721: set1 191("BF) h:=7214048+491520=7705568, hh:=488
+723: w0 218453 h:=7705568+218453=7924021, hh:=502
+[ ]
+724: set1 197("C5) h:=7924021+491520=8415541, hh:=533
+726: set1 191("BF) h:=8415541+491520=8907061, hh:=564
+728: w0 218453 h:=8907061+218453=9125514, hh:=578
+[ ]
+729: fntnum1 current font is min10
+730: set2 17727("453F) type=0 h:=9125514+630598=9756112, hh:=618
+733: x3 436906 h:=9756112+436906=10193018, hh:=646
+[䔿 ]
+737: fntnum0 current font is ec-lmr10
+738: set1 197("C5) h:=10193018+491520=10684538, hh:=677
+740: set1 191("BF) h:=10684538+491520=11176058, hh:=708
+742: w0 218453 h:=11176058+218453=11394511, hh:=722
+[ ]
+743: fntnum1 current font is min10
+744: set2 17727("453F) type=0 h:=11394511+630598=12025109, hh:=762
+747: x0 436906 h:=12025109+436906=12462015, hh:=789
+748: set2 9252("2424) type=0 h:=12462015+630598=13092613, hh:=829
+[䔿 ␤]
+751: fntnum0 current font is ec-lmr10
+752: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864
+753: setchar97 ("61) h:=13638724+327680=13966404, hh:=885
+754: setchar99 ("63) h:=13966404+291275=14257679, hh:=903
+755: setchar114 ("72) h:=14257679+256683=14514362, hh:=919
+756: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940
+757: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952
+758: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966
+759: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998
+[macro:->]
+760: set1 197("C5) h:=15752276+491520=16243796, hh:=1029
+762: set1 191("BF) h:=16243796+491520=16735316, hh:=1060
+764: w0 218453 h:=16735316+218453=16953769, hh:=1074
+[ ]
+765: set1 197("C5) h:=16953769+491520=17445289, hh:=1105
+767: set1 191("BF) h:=17445289+491520=17936809, hh:=1136
+769: w0 218453 h:=17936809+218453=18155262, hh:=1150
+[ ]
+770: fntnum1 current font is min10
+771: set2 17727("453F) type=0 h:=18155262+630598=18785860, hh:=1190
+[䔿]
+774: pop
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+775: y0 786432 v:=13238272+786432=14024704, vv:=888
+776: push
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+777: right3 1310720 h:=0+1310720=1310720, hh:=83
+781: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[ ␢]
+784: fntnum0 current font is ec-lmr10
+785: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+787: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+789: w3 218453 h:=2924358+218453=3142811, hh:=199
+[ ]
+793: set1 197("C5) h:=3142811+491520=3634331, hh:=230
+795: set1 191("BF) h:=3634331+491520=4125851, hh:=261
+797: fntnum1 current font is min10
+798: set2 17727("453F) type=0 h:=4125851+630598=4756449, hh:=301
+[䔿]
+801: fntnum0 current font is ec-lmr10
+802: set1 197("C5) h:=4756449+491520=5247969, hh:=332
+804: set1 191("BF) h:=5247969+491520=5739489, hh:=363
+806: w0 218453 h:=5739489+218453=5957942, hh:=377
+807: setchar97 ("61) h:=5957942+327680=6285622, hh:=398
+[ a]
+808: set1 197("C5) h:=6285622+491520=6777142, hh:=429
+810: set1 191("BF) h:=6777142+491520=7268662, hh:=460
+812: w0 218453 h:=7268662+218453=7487115, hh:=474
+[ ]
+813: set1 197("C5) h:=7487115+491520=7978635, hh:=505
+815: set1 191("BF) h:=7978635+491520=8470155, hh:=536
+817: w0 218453 h:=8470155+218453=8688608, hh:=550
+[ ]
+818: fntnum1 current font is min10
+819: set2 17727("453F) type=0 h:=8688608+630598=9319206, hh:=590
+822: w0 218453 h:=9319206+218453=9537659, hh:=604
+[䔿 ]
+823: fntnum0 current font is ec-lmr10
+824: set1 197("C5) h:=9537659+491520=10029179, hh:=635
+826: set1 191("BF) h:=10029179+491520=10520699, hh:=666
+828: w0 218453 h:=10520699+218453=10739152, hh:=680
+[ ]
+829: set1 197("C5) h:=10739152+491520=11230672, hh:=711
+831: set1 191("BF) h:=11230672+491520=11722192, hh:=742
+833: w0 218453 h:=11722192+218453=11940645, hh:=756
+[ ]
+834: fntnum1 current font is min10
+835: set2 17727("453F) type=0 h:=11940645+630598=12571243, hh:=796
+838: right3 436906 h:=12571243+436906=13008149, hh:=824
+[䔿 ]
+842: fntnum0 current font is ec-lmr10
+843: set1 197("C5) h:=13008149+491520=13499669, hh:=855
+845: set1 191("BF) h:=13499669+491520=13991189, hh:=886
+847: w0 218453 h:=13991189+218453=14209642, hh:=900
+[ ]
+848: fntnum1 current font is min10
+849: set2 17727("453F) type=0 h:=14209642+630598=14840240, hh:=940
+852: w0 218453 h:=14840240+218453=15058693, hh:=954
+853: set2 9252("2424) type=0 h:=15058693+630598=15689291, hh:=994
+[䔿 ␤]
+856: fntnum0 current font is ec-lmr10
+857: set1 255("FF) h:=15689291+327680=16016971, hh:=1015
+859: pop
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+860: y0 786432 v:=14024704+786432=14811136, vv:=938
+861: push
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+862: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+866: fntnum1 current font is min10
+867: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123
+[␤]
+870: pop
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+871: y0 786432 v:=14811136+786432=15597568, vv:=988
+872: push
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+873: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+877: fntnum0 current font is ec-lmr10
+878: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+879: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+880: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+881: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+882: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+883: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+884: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+885: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+886: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+887: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[.a...c.b..]
+888: pop
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+889: y0 786432 v:=15597568+786432=16384000, vv:=1038
+890: push
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+891: right3 1310720 h:=0+1310720=1310720, hh:=83
+895: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+896: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+897: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+898: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+899: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+900: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+901: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+902: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+903: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+904: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[ .a...c.b..]
+905: pop
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+906: y0 786432 v:=16384000+786432=17170432, vv:=1088
+907: push
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+908: push
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+909: fntnum1 current font is min10
+910: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+913: pop
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+914: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+918: fntnum0 current font is ec-lmr10
+919: setchar99 ("63) h:=630598+291275=921873, hh:=58
+920: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+921: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+922: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+923: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+924: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+925: setchar50 ("32) h:=2709530+327680=3037210, hh:=192
+926: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname2.]
+927: pop
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+928: y0 786432 v:=17170432+786432=17956864, vv:=1137
+929: push
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+930: right3 1310720 h:=0+1310720=1310720, hh:=83
+934: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+935: setchar72 ("48) h:=1674805+491520=2166325, hh:=137
+936: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169
+937: right2 -18205 h:=2676063-18205=2657858, hh:=168
+940: setchar87 ("57) h:=2657858+673578=3331436, hh:=211
+941: right3 218453 h:=3331436+218453=3549889, hh:=225
+945: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237
+946: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249
+947: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261
+[ SHOW ...]
+948: pop
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+949: y0 786432 v:=17956864+786432=18743296, vv:=1187
+950: push
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+951: right3 1310720 h:=0+1310720=1310720, hh:=83
+955: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+956: setchar84 ("54) h:=1674805+473301=2148106, hh:=136
+957: setchar82 ("52) h:=2148106+482410=2630516, hh:=167
+958: setchar73 ("49) h:=2630516+236650=2867166, hh:=182
+959: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213
+960: setchar71 ("47) h:=3358686+514261=3872947, hh:=246
+961: right3 218453 h:=3872947+218453=4091400, hh:=259
+965: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280
+[ STRING \]
+966: set1 197("C5) h:=4419080+491520=4910600, hh:=311
+968: set1 191("BF) h:=4910600+491520=5402120, hh:=342
+970: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354
+971: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375
+[.\]
+972: fntnum1 current font is min10
+973: set2 17727("453F) type=0 h:=5911843+630598=6542441, hh:=415
+[䔿]
+976: fntnum0 current font is ec-lmr10
+977: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427
+978: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448
+[.\]
+979: set1 197("C5) h:=7052164+491520=7543684, hh:=479
+981: set1 191("BF) h:=7543684+491520=8035204, hh:=510
+983: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522
+984: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543
+[.\]
+985: fntnum1 current font is min10
+986: set2 17727("453F) type=0 h:=8544927+630598=9175525, hh:=583
+[䔿]
+989: pop
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+990: y0 786432 v:=18743296+786432=19529728, vv:=1237
+991: push
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+992: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+996: fntnum0 current font is ec-lmr10
+997: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121
+998: setchar69 ("45) h:=1911488+446005=2357493, hh:=149
+999: setchar65 ("41) h:=2357493+491520=2849013, hh:=180
+1000: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211
+1001: setchar73 ("49) h:=3340533+236650=3577183, hh:=226
+1002: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257
+1003: setchar71 ("47) h:=4068703+514261=4582964, hh:=290
+1004: right3 218453 h:=4582964+218453=4801417, hh:=304
+1008: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339
+1009: setchar97 ("61) h:=5347528+327680=5675208, hh:=360
+1010: setchar99 ("63) h:=5675208+291275=5966483, hh:=378
+1011: setchar114 ("72) h:=5966483+256683=6223166, hh:=394
+1012: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415
+1013: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427
+1014: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441
+1015: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473
+1016: setchar97 ("61) h:=7461080+327680=7788760, hh:=494
+1017: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506
+1018: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541
+1019: setchar97 ("61) h:=8516914+327680=8844594, hh:=562
+1020: setchar99 ("63) h:=8844594+291275=9135869, hh:=580
+1021: setchar114 ("72) h:=9135869+256683=9392552, hh:=596
+1022: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617
+1023: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629
+1024: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643
+1025: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675
+1026: setchar98 ("62) h:=10630466+364085=10994551, hh:=698
+1027: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710
+1028: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745
+1029: setchar97 ("61) h:=11722705+327680=12050385, hh:=765
+1030: setchar99 ("63) h:=12050385+291275=12341660, hh:=783
+1031: setchar114 ("72) h:=12341660+256683=12598343, hh:=799
+1032: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820
+1033: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832
+1034: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846
+1035: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878
+1036: setchar97 ("61) h:=13836257+327680=14163937, hh:=899
+1037: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911
+1038: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945
+1039: setchar97 ("61) h:=14892091+327680=15219771, hh:=966
+1040: setchar99 ("63) h:=15219771+291275=15511046, hh:=984
+1041: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000
+1042: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021
+1043: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033
+1044: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047
+1045: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079
+1046: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102
+1047: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114
+[MEANING macro:->a.macro:->b.macro:->a.macro:->b.]
+1048: pop
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+1049: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+1050: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+1054: eop
diff --git a/Build/source/texk/web2c/ptexdir/tests/p-pknj-sa.typ b/Build/source/texk/web2c/ptexdir/tests/p-pknj-sa.typ
new file mode 100644
index 00000000000..9373f0bac64
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/p-pknj-sa.typ
@@ -0,0 +1,829 @@
+Options selected:
+ Starting page = *
+ Maximum number of pages = 1000000
+ Output level = 4 (the works)
+ Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000; 0.00006334 pixels per DVI unit
+' TeX output 20XX.XX.XX'
+Postamble starts at byte 1061.
+maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1
+Font 1: min10 (JFM)---loaded at size 655360 DVI units
+Font 0: ec-lmr10---loaded at size 655360 DVI units
+
+42: beginning of page 37726
+87: push
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+88: down3 -917504 v:=0-917504=-917504, vv:=-58
+92: pop
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+93: down4 42152922 v:=0+42152922=42152922, vv:=2670
+98: push
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+99: down4 -41497562 v:=42152922-41497562=655360, vv:=42
+104: push
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+105: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+109: fntdef1 0: ec-lmr10
+133: fntnum0 current font is ec-lmr10
+134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114
+135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126
+136: w3 218453 h:=1984283+218453=2202736, hh:=140
+[A: ]
+140: set1 197("C5) h:=2202736+491520=2694256, hh:=171
+142: set1 191("BF) h:=2694256+491520=3185776, hh:=202
+144: w0 218453 h:=3185776+218453=3404229, hh:=216
+[ ]
+145: set1 197("C5) h:=3404229+491520=3895749, hh:=247
+147: set1 191("BF) h:=3895749+491520=4387269, hh:=278
+149: w0 218453 h:=4387269+218453=4605722, hh:=292
+[ ]
+150: fntdef1 1: min10
+171: fntnum1 current font is min10
+172: set2 17727("453F) type=0 h:=4605722+630598=5236320, hh:=332
+[䔿]
+175: pop
+level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42)
+176: y3 786432 v:=655360+786432=1441792, vv:=91
+180: push
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+181: push
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+182: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+185: pop
+level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+186: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+190: fntnum0 current font is ec-lmr10
+191: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+192: setchar109 ("6D) h:=958278+546111=1504389, hh:=96
+193: setchar101 ("65) h:=1504389+291275=1795664, hh:=114
+194: setchar97 ("61) h:=1795664+327680=2123344, hh:=135
+195: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158
+196: setchar105 ("69) h:=2487429+182043=2669472, hh:=170
+197: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193
+198: setchar103 ("67) h:=3033557+327680=3361237, hh:=214
+199: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226
+[\meaning.]
+200: pop
+level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91)
+201: y0 786432 v:=1441792+786432=2228224, vv:=141
+202: push
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+203: right3 1310720 h:=0+1310720=1310720, hh:=83
+207: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+208: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+209: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+210: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+211: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+212: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+213: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+214: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+215: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287
+216: setchar97 ("61) h:=4516494+327680=4844174, hh:=308
+217: setchar99 ("63) h:=4844174+291275=5135449, hh:=326
+218: setchar114 ("72) h:=5135449+256683=5392132, hh:=342
+219: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363
+220: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375
+221: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389
+222: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421
+[ macro:->macro:->]
+223: set1 197("C5) h:=6630046+491520=7121566, hh:=452
+225: set1 191("BF) h:=7121566+491520=7613086, hh:=483
+227: w3 218453 h:=7613086+218453=7831539, hh:=496
+[ ]
+231: set1 197("C5) h:=7831539+491520=8323059, hh:=527
+233: set1 191("BF) h:=8323059+491520=8814579, hh:=558
+235: w0 218453 h:=8814579+218453=9033032, hh:=572
+[ ]
+236: fntnum1 current font is min10
+237: set2 17727("453F) type=0 h:=9033032+630598=9663630, hh:=612
+[䔿]
+240: pop
+level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141)
+241: y0 786432 v:=2228224+786432=3014656, vv:=191
+242: push
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+243: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+247: fntnum0 current font is ec-lmr10
+248: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118
+249: setchar97 ("61) h:=1856831+327680=2184511, hh:=139
+250: setchar99 ("63) h:=2184511+291275=2475786, hh:=157
+251: setchar114 ("72) h:=2475786+256683=2732469, hh:=173
+252: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194
+253: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206
+254: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220
+255: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252
+[macro:->]
+256: set1 197("C5) h:=3970383+491520=4461903, hh:=283
+258: set1 191("BF) h:=4461903+491520=4953423, hh:=314
+260: w3 218453 h:=4953423+218453=5171876, hh:=328
+[ ]
+264: set1 197("C5) h:=5171876+491520=5663396, hh:=359
+266: set1 191("BF) h:=5663396+491520=6154916, hh:=390
+268: w0 218453 h:=6154916+218453=6373369, hh:=404
+[ ]
+269: fntnum1 current font is min10
+270: set2 17727("453F) type=0 h:=6373369+630598=7003967, hh:=444
+[䔿]
+273: pop
+level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191)
+274: y0 786432 v:=3014656+786432=3801088, vv:=241
+275: push
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+276: push
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+277: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+280: pop
+level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+281: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+285: fntnum0 current font is ec-lmr10
+286: setchar92 ("5C) h:=630598+327680=958278, hh:=61
+287: setchar106 ("6A) h:=958278+200245=1158523, hh:=74
+288: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95
+289: setchar98 ("62) h:=1486203+364085=1850288, hh:=118
+290: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141
+291: setchar97 ("61) h:=2214373+327680=2542053, hh:=162
+292: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197
+293: setchar101 ("65) h:=3088164+291275=3379439, hh:=215
+294: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227
+[\jobname.]
+295: pop
+level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241)
+296: y0 786432 v:=3801088+786432=4587520, vv:=291
+297: push
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+298: push
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+299: fntnum1 current font is min10
+300: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+303: pop
+level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+304: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+308: fntnum0 current font is ec-lmr10
+309: setchar111 ("6F) h:=630598+327680=958278, hh:=61
+310: setchar110 ("6E) h:=958278+364085=1322363, hh:=84
+311: setchar101 ("65) h:=1322363+291275=1613638, hh:=102
+312: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114
+313: setchar101 ("65) h:=1795681+291275=2086956, hh:=132
+314: setchar116 ("74) h:=2086956+254870=2341826, hh:=148
+315: setchar116 ("74) h:=2341826+254870=2596696, hh:=164
+316: setchar101 ("65) h:=2596696+291275=2887971, hh:=182
+317: setchar114 ("72) h:=2887971+256683=3144654, hh:=198
+318: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210
+[oneletter.]
+319: pop
+level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291)
+320: y0 786432 v:=4587520+786432=5373952, vv:=340
+321: push
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+322: right3 1310720 h:=0+1310720=1310720, hh:=83
+326: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+327: set1 196("C4) h:=1638400+491520=2129920, hh:=135
+329: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147
+330: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168
+[.\]
+331: set1 197("C5) h:=2639643+491520=3131163, hh:=199
+333: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211
+334: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232
+[.\]
+335: set1 255("FF) h:=3640886+327680=3968566, hh:=253
+337: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265
+338: right3 291271 h:=4150609+291271=4441880, hh:=281
+[. ]
+342: set1 191("BF) h:=4441880+491520=4933400, hh:=312
+344: pop
+level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340)
+345: y0 786432 v:=5373952+786432=6160384, vv:=390
+346: push
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+347: push
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+348: fntnum1 current font is min10
+349: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+352: pop
+level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+353: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+357: fntnum0 current font is ec-lmr10
+358: setchar99 ("63) h:=630598+291275=921873, hh:=58
+359: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+360: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+361: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+362: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+363: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+364: setchar49 ("31) h:=2709530+327680=3037210, hh:=192
+365: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname1.]
+366: pop
+level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390)
+367: y0 786432 v:=6160384+786432=6946816, vv:=440
+368: push
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+369: right3 1310720 h:=0+1310720=1310720, hh:=83
+373: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+374: set1 197("C5) h:=1638400+491520=2129920, hh:=135
+376: set1 191("BF) h:=2129920+491520=2621440, hh:=166
+378: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187
+[\]
+379: set1 197("C5) h:=2949120+491520=3440640, hh:=218
+381: set1 191("BF) h:=3440640+491520=3932160, hh:=249
+383: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261
+384: w3 218453 h:=4114203+218453=4332656, hh:=274
+388: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295
+[, \]
+389: set1 197("C5) h:=4660336+491520=5151856, hh:=326
+391: set1 191("BF) h:=5151856+491520=5643376, hh:=357
+393: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369
+394: w0 218453 h:=5825419+218453=6043872, hh:=383
+395: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404
+[, \]
+396: fntnum1 current font is min10
+397: set2 17727("453F) type=0 h:=6371552+630598=7002150, hh:=444
+[䔿]
+400: pop
+level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440)
+401: y0 786432 v:=6946816+786432=7733248, vv:=490
+402: push
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+403: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+407: fntnum0 current font is ec-lmr10
+408: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[\]
+409: fntnum1 current font is min10
+410: set2 9250("2422) type=0 h:=1638400+630598=2268998, hh:=144
+[␢]
+413: fntnum0 current font is ec-lmr10
+414: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176
+415: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208
+416: right3 218453 h:=3288474+218453=3506927, hh:=222
+420: setchar104 ("68) h:=3506927+364085=3871012, hh:=245
+421: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266
+422: setchar103 ("67) h:=4198692+327680=4526372, hh:=287
+423: setchar101 ("65) h:=4526372+291275=4817647, hh:=305
+424: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317
+[=> hoge,]
+425: pop
+level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490)
+426: y0 786432 v:=7733248+786432=8519680, vv:=540
+427: push
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+428: right3 1310720 h:=0+1310720=1310720, hh:=83
+432: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+433: set1 227("E3) h:=1638400+327680=1966080, hh:=125
+435: set1 129("81) h:=1966080+491520=2457600, hh:=156
+437: w2 -18205 h:=2457600-18205=2439395, hh:=155
+440: set1 130("82) h:=2439395+473301=2912696, hh:=185
+442: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217
+443: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249
+444: right3 218453 h:=3932172+218453=4150625, hh:=263
+448: setchar112 ("70) h:=4150625+364085=4514710, hh:=286
+449: setchar105 ("69) h:=4514710+182043=4696753, hh:=298
+450: setchar121 ("79) h:=4696753+345898=5042651, hh:=320
+451: w0 -18205 h:=5042651-18205=5024446, hh:=319
+452: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340
+453: setchar44 ("2C) h:=5352126+182043=5534169, hh:=352
+[=> piyo,]
+454: pop
+level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540)
+455: y0 786432 v:=8519680+786432=9306112, vv:=589
+456: push
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+457: right3 1310720 h:=0+1310720=1310720, hh:=83
+461: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104
+[ \]
+462: set1 227("E3) h:=1638400+327680=1966080, hh:=125
+464: set1 129("81) h:=1966080+491520=2457600, hh:=156
+466: w2 -18205 h:=2457600-18205=2439395, hh:=155
+469: set1 130("82) h:=2439395+473301=2912696, hh:=185
+471: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217
+472: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249
+473: right3 218453 h:=3932172+218453=4150625, hh:=263
+477: setchar112 ("70) h:=4150625+364085=4514710, hh:=286
+478: setchar105 ("69) h:=4514710+182043=4696753, hh:=298
+479: setchar121 ("79) h:=4696753+345898=5042651, hh:=320
+480: w0 -18205 h:=5042651-18205=5024446, hh:=319
+481: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340
+482: setchar46 ("2E) h:=5352126+182043=5534169, hh:=352
+[=> piyo.]
+483: pop
+level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589)
+484: y0 786432 v:=9306112+786432=10092544, vv:=639
+485: push
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+486: push
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+487: fntnum1 current font is min10
+488: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+491: pop
+level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+492: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+496: fntnum0 current font is ec-lmr10
+497: setchar48 ("30) h:=630598+327680=958278, hh:=61
+498: setchar120 ("78) h:=958278+345898=1304176, hh:=83
+499: setchar70 ("46) h:=1304176+427818=1731994, hh:=110
+500: setchar70 ("46) h:=1731994+427818=2159812, hh:=137
+501: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149
+[0xFF.]
+502: pop
+level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639)
+503: y0 786432 v:=10092544+786432=10878976, vv:=689
+504: push
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+505: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+509: fntnum1 current font is min10
+510: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[␢]
+513: fntnum0 current font is ec-lmr10
+514: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+515: w3 218453 h:=2123361+218453=2341814, hh:=148
+519: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+520: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+521: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+523: set1 197("C5) h:=3252044+491520=3743564, hh:=237
+525: set1 255("FF) h:=3743564+327680=4071244, hh:=258
+527: set1 191("BF) h:=4071244+491520=4562764, hh:=289
+529: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301
+530: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336
+531: setchar97 ("61) h:=5290918+327680=5618598, hh:=357
+532: setchar99 ("63) h:=5618598+291275=5909873, hh:=375
+533: setchar114 ("72) h:=5909873+256683=6166556, hh:=391
+534: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412
+535: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424
+536: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438
+537: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470
+[:macro:->]
+538: fntnum1 current font is min10
+539: set2 9250("2422) type=0 h:=7404470+630598=8035068, hh:=510
+[␢]
+542: fntnum0 current font is ec-lmr10
+543: setchar41 ("29) h:=8035068+254870=8289938, hh:=526
+544: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538
+545: w0 218453 h:=8471981+218453=8690434, hh:=550
+546: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571
+[), \]
+547: set1 255("FF) h:=9018114+327680=9345794, hh:=592
+549: set1 197("C5) h:=9345794+491520=9837314, hh:=623
+551: set1 255("FF) h:=9837314+327680=10164994, hh:=644
+553: set1 191("BF) h:=10164994+491520=10656514, hh:=675
+555: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687
+556: w0 218453 h:=10838557+218453=11057010, hh:=700
+557: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735
+558: setchar97 ("61) h:=11603121+327680=11930801, hh:=756
+559: setchar99 ("63) h:=11930801+291275=12222076, hh:=774
+560: setchar114 ("72) h:=12222076+256683=12478759, hh:=790
+561: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811
+562: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823
+563: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837
+564: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869
+565: setchar40 ("28) h:=13716673+254870=13971543, hh:=885
+566: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906
+[, macro:->(\]
+567: set1 255("FF) h:=14299223+327680=14626903, hh:=927
+569: set1 197("C5) h:=14626903+491520=15118423, hh:=958
+571: set1 255("FF) h:=15118423+327680=15446103, hh:=979
+573: set1 191("BF) h:=15446103+491520=15937623, hh:=1010
+575: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022
+576: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057
+577: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078
+578: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096
+579: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112
+580: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133
+581: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145
+582: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159
+583: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191
+[:macro:->]
+584: fntnum1 current font is min10
+585: set2 9250("2422) type=0 h:=18779329+630598=19409927, hh:=1231
+[␢]
+588: fntnum0 current font is ec-lmr10
+589: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247
+590: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259
+[).]
+591: pop
+level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689)
+592: y0 786432 v:=10878976+786432=11665408, vv:=739
+593: push
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+594: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+598: fntnum1 current font is min10
+599: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123
+[␤]
+602: fntnum0 current font is ec-lmr10
+603: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135
+604: w3 218453 h:=2123361+218453=2341814, hh:=148
+608: setchar40 ("28) h:=2341814+254870=2596684, hh:=164
+609: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185
+[, (\]
+610: set1 255("FF) h:=2924364+327680=3252044, hh:=206
+612: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218
+613: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253
+614: setchar97 ("61) h:=3980198+327680=4307878, hh:=274
+615: setchar99 ("63) h:=4307878+291275=4599153, hh:=292
+616: setchar114 ("72) h:=4599153+256683=4855836, hh:=308
+617: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329
+618: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341
+619: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355
+620: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387
+[:macro:->]
+621: fntnum1 current font is min10
+622: set2 9252("2424) type=0 h:=6093750+630598=6724348, hh:=427
+[␤]
+625: fntnum0 current font is ec-lmr10
+626: setchar41 ("29) h:=6724348+254870=6979218, hh:=443
+627: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455
+628: w0 218453 h:=7161261+218453=7379714, hh:=467
+629: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488
+[), \]
+630: set1 255("FF) h:=7707394+327680=8035074, hh:=509
+632: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521
+633: w0 218453 h:=8217117+218453=8435570, hh:=534
+634: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569
+635: setchar97 ("61) h:=8981681+327680=9309361, hh:=590
+636: setchar99 ("63) h:=9309361+291275=9600636, hh:=608
+637: setchar114 ("72) h:=9600636+256683=9857319, hh:=624
+638: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645
+639: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657
+640: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671
+641: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703
+642: setchar40 ("28) h:=11095233+254870=11350103, hh:=719
+643: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740
+[, macro:->(\]
+644: set1 255("FF) h:=11677783+327680=12005463, hh:=761
+646: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773
+647: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808
+648: setchar97 ("61) h:=12733617+327680=13061297, hh:=829
+649: setchar99 ("63) h:=13061297+291275=13352572, hh:=847
+650: setchar114 ("72) h:=13352572+256683=13609255, hh:=863
+651: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884
+652: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896
+653: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910
+654: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942
+[:macro:->]
+655: fntnum1 current font is min10
+656: set2 9252("2424) type=0 h:=14847169+630598=15477767, hh:=982
+[␤]
+659: fntnum0 current font is ec-lmr10
+660: setchar41 ("29) h:=15477767+254870=15732637, hh:=998
+661: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010
+[).]
+662: pop
+level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739)
+663: y0 786432 v:=11665408+786432=12451840, vv:=789
+664: push
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+665: push
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+666: fntnum1 current font is min10
+667: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+670: pop
+level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+671: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+675: fntnum0 current font is ec-lmr10
+676: setchar99 ("63) h:=630598+291275=921873, hh:=58
+677: setchar111 ("6F) h:=921873+327680=1249553, hh:=79
+678: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102
+679: right2 -18205 h:=1613638-18205=1595433, hh:=101
+682: setchar116 ("74) h:=1595433+254870=1850303, hh:=117
+683: setchar101 ("65) h:=1850303+291275=2141578, hh:=135
+684: setchar120 ("78) h:=2141578+345898=2487476, hh:=157
+685: setchar116 ("74) h:=2487476+254870=2742346, hh:=173
+686: setchar115 ("73) h:=2742346+258506=3000852, hh:=189
+687: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201
+[contexts.]
+688: pop
+level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789)
+689: y0 786432 v:=12451840+786432=13238272, vv:=839
+690: push
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+691: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+695: fntnum1 current font is min10
+696: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[␢]
+699: fntnum0 current font is ec-lmr10
+700: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+702: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+704: w3 218453 h:=2924358+218453=3142811, hh:=199
+708: setchar97 ("61) h:=3142811+327680=3470491, hh:=220
+[ a]
+709: set1 197("C5) h:=3470491+491520=3962011, hh:=251
+711: set1 191("BF) h:=3962011+491520=4453531, hh:=282
+713: w0 218453 h:=4453531+218453=4671984, hh:=296
+[ ]
+714: set1 197("C5) h:=4671984+491520=5163504, hh:=327
+716: set1 191("BF) h:=5163504+491520=5655024, hh:=358
+718: w0 218453 h:=5655024+218453=5873477, hh:=372
+[ ]
+719: fntnum1 current font is min10
+720: set2 17727("453F) type=0 h:=5873477+630598=6504075, hh:=412
+723: w0 218453 h:=6504075+218453=6722528, hh:=426
+[䔿 ]
+724: fntnum0 current font is ec-lmr10
+725: set1 197("C5) h:=6722528+491520=7214048, hh:=457
+727: set1 191("BF) h:=7214048+491520=7705568, hh:=488
+729: w0 218453 h:=7705568+218453=7924021, hh:=502
+[ ]
+730: set1 197("C5) h:=7924021+491520=8415541, hh:=533
+732: set1 191("BF) h:=8415541+491520=8907061, hh:=564
+734: w0 218453 h:=8907061+218453=9125514, hh:=578
+[ ]
+735: fntnum1 current font is min10
+736: set2 17727("453F) type=0 h:=9125514+630598=9756112, hh:=618
+739: x3 436906 h:=9756112+436906=10193018, hh:=646
+[䔿 ]
+743: fntnum0 current font is ec-lmr10
+744: set1 197("C5) h:=10193018+491520=10684538, hh:=677
+746: set1 191("BF) h:=10684538+491520=11176058, hh:=708
+748: w0 218453 h:=11176058+218453=11394511, hh:=722
+[ ]
+749: fntnum1 current font is min10
+750: set2 17727("453F) type=0 h:=11394511+630598=12025109, hh:=762
+753: x0 436906 h:=12025109+436906=12462015, hh:=789
+754: set2 9252("2424) type=0 h:=12462015+630598=13092613, hh:=829
+[䔿 ␤]
+757: fntnum0 current font is ec-lmr10
+758: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864
+759: setchar97 ("61) h:=13638724+327680=13966404, hh:=885
+760: setchar99 ("63) h:=13966404+291275=14257679, hh:=903
+761: setchar114 ("72) h:=14257679+256683=14514362, hh:=919
+762: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940
+763: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952
+764: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966
+765: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998
+[macro:->]
+766: set1 197("C5) h:=15752276+491520=16243796, hh:=1029
+768: set1 191("BF) h:=16243796+491520=16735316, hh:=1060
+770: w0 218453 h:=16735316+218453=16953769, hh:=1074
+[ ]
+771: set1 197("C5) h:=16953769+491520=17445289, hh:=1105
+773: set1 191("BF) h:=17445289+491520=17936809, hh:=1136
+775: w0 218453 h:=17936809+218453=18155262, hh:=1150
+[ ]
+776: fntnum1 current font is min10
+777: set2 17727("453F) type=0 h:=18155262+630598=18785860, hh:=1190
+[䔿]
+780: pop
+level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839)
+781: y0 786432 v:=13238272+786432=14024704, vv:=888
+782: push
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+783: right3 1310720 h:=0+1310720=1310720, hh:=83
+787: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123
+[ ␢]
+790: fntnum0 current font is ec-lmr10
+791: set1 197("C5) h:=1941318+491520=2432838, hh:=154
+793: set1 191("BF) h:=2432838+491520=2924358, hh:=185
+795: w3 218453 h:=2924358+218453=3142811, hh:=199
+[ ]
+799: set1 197("C5) h:=3142811+491520=3634331, hh:=230
+801: set1 191("BF) h:=3634331+491520=4125851, hh:=261
+803: fntnum1 current font is min10
+804: set2 17727("453F) type=0 h:=4125851+630598=4756449, hh:=301
+[䔿]
+807: fntnum0 current font is ec-lmr10
+808: set1 197("C5) h:=4756449+491520=5247969, hh:=332
+810: set1 191("BF) h:=5247969+491520=5739489, hh:=363
+812: w0 218453 h:=5739489+218453=5957942, hh:=377
+813: setchar97 ("61) h:=5957942+327680=6285622, hh:=398
+[ a]
+814: set1 197("C5) h:=6285622+491520=6777142, hh:=429
+816: set1 191("BF) h:=6777142+491520=7268662, hh:=460
+818: w0 218453 h:=7268662+218453=7487115, hh:=474
+[ ]
+819: set1 197("C5) h:=7487115+491520=7978635, hh:=505
+821: set1 191("BF) h:=7978635+491520=8470155, hh:=536
+823: w0 218453 h:=8470155+218453=8688608, hh:=550
+[ ]
+824: fntnum1 current font is min10
+825: set2 17727("453F) type=0 h:=8688608+630598=9319206, hh:=590
+828: w0 218453 h:=9319206+218453=9537659, hh:=604
+[䔿 ]
+829: fntnum0 current font is ec-lmr10
+830: set1 197("C5) h:=9537659+491520=10029179, hh:=635
+832: set1 191("BF) h:=10029179+491520=10520699, hh:=666
+834: w0 218453 h:=10520699+218453=10739152, hh:=680
+[ ]
+835: set1 197("C5) h:=10739152+491520=11230672, hh:=711
+837: set1 191("BF) h:=11230672+491520=11722192, hh:=742
+839: w0 218453 h:=11722192+218453=11940645, hh:=756
+[ ]
+840: fntnum1 current font is min10
+841: set2 17727("453F) type=0 h:=11940645+630598=12571243, hh:=796
+844: right3 436906 h:=12571243+436906=13008149, hh:=824
+[䔿 ]
+848: fntnum0 current font is ec-lmr10
+849: set1 197("C5) h:=13008149+491520=13499669, hh:=855
+851: set1 191("BF) h:=13499669+491520=13991189, hh:=886
+853: w0 218453 h:=13991189+218453=14209642, hh:=900
+[ ]
+854: fntnum1 current font is min10
+855: set2 17727("453F) type=0 h:=14209642+630598=14840240, hh:=940
+858: w0 218453 h:=14840240+218453=15058693, hh:=954
+859: set2 9252("2424) type=0 h:=15058693+630598=15689291, hh:=994
+[䔿 ␤]
+862: fntnum0 current font is ec-lmr10
+863: set1 255("FF) h:=15689291+327680=16016971, hh:=1015
+865: pop
+level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888)
+866: y0 786432 v:=14024704+786432=14811136, vv:=938
+867: push
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+868: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+872: fntnum1 current font is min10
+873: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123
+[␤]
+876: pop
+level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938)
+877: y0 786432 v:=14811136+786432=15597568, vv:=988
+878: push
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+879: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+883: fntnum0 current font is ec-lmr10
+884: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+885: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+886: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+887: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+888: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+889: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+890: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+891: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+892: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+893: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[.a...c.b..]
+894: pop
+level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988)
+895: y0 786432 v:=15597568+786432=16384000, vv:=1038
+896: push
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+897: right3 1310720 h:=0+1310720=1310720, hh:=83
+901: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95
+902: setchar97 ("61) h:=1492763+327680=1820443, hh:=116
+903: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128
+904: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140
+905: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152
+906: setchar99 ("63) h:=2366572+291275=2657847, hh:=170
+907: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182
+908: setchar98 ("62) h:=2839890+364085=3203975, hh:=205
+909: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216
+910: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228
+[ .a...c.b..]
+911: pop
+level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038)
+912: y0 786432 v:=16384000+786432=17170432, vv:=1088
+913: push
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+914: push
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+915: fntnum1 current font is min10
+916: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40
+[∣]
+919: pop
+level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+920: right3 630598 h:=0+630598=630598, hh:=40
+[ ]
+924: fntnum0 current font is ec-lmr10
+925: setchar99 ("63) h:=630598+291275=921873, hh:=58
+926: setchar115 ("73) h:=921873+258506=1180379, hh:=74
+927: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97
+928: setchar97 ("61) h:=1544464+327680=1872144, hh:=118
+929: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153
+930: setchar101 ("65) h:=2418255+291275=2709530, hh:=171
+931: setchar50 ("32) h:=2709530+327680=3037210, hh:=192
+932: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204
+[csname2.]
+933: pop
+level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088)
+934: y0 786432 v:=17170432+786432=17956864, vv:=1137
+935: push
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+936: right3 1310720 h:=0+1310720=1310720, hh:=83
+940: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+941: setchar72 ("48) h:=1674805+491520=2166325, hh:=137
+942: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169
+943: right2 -18205 h:=2676063-18205=2657858, hh:=168
+946: setchar87 ("57) h:=2657858+673578=3331436, hh:=211
+947: right3 218453 h:=3331436+218453=3549889, hh:=225
+951: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237
+952: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249
+953: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261
+[ SHOW ...]
+954: pop
+level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137)
+955: y0 786432 v:=17956864+786432=18743296, vv:=1187
+956: push
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+957: right3 1310720 h:=0+1310720=1310720, hh:=83
+961: setchar83 ("53) h:=1310720+364085=1674805, hh:=106
+962: setchar84 ("54) h:=1674805+473301=2148106, hh:=136
+963: setchar82 ("52) h:=2148106+482410=2630516, hh:=167
+964: setchar73 ("49) h:=2630516+236650=2867166, hh:=182
+965: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213
+966: setchar71 ("47) h:=3358686+514261=3872947, hh:=246
+967: right3 218453 h:=3872947+218453=4091400, hh:=259
+971: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280
+[ STRING \]
+972: set1 197("C5) h:=4419080+491520=4910600, hh:=311
+974: set1 191("BF) h:=4910600+491520=5402120, hh:=342
+976: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354
+977: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375
+[.\]
+978: fntnum1 current font is min10
+979: set2 17727("453F) type=0 h:=5911843+630598=6542441, hh:=415
+[䔿]
+982: fntnum0 current font is ec-lmr10
+983: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427
+984: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448
+[.\]
+985: set1 197("C5) h:=7052164+491520=7543684, hh:=479
+987: set1 191("BF) h:=7543684+491520=8035204, hh:=510
+989: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522
+990: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543
+[.\]
+991: fntnum1 current font is min10
+992: set2 17727("453F) type=0 h:=8544927+630598=9175525, hh:=583
+[䔿]
+995: pop
+level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187)
+996: y0 786432 v:=18743296+786432=19529728, vv:=1237
+997: push
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+998: right3 1310720 h:=0+1310720=1310720, hh:=83
+[ ]
+1002: fntnum0 current font is ec-lmr10
+1003: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121
+1004: setchar69 ("45) h:=1911488+446005=2357493, hh:=149
+1005: setchar65 ("41) h:=2357493+491520=2849013, hh:=180
+1006: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211
+1007: setchar73 ("49) h:=3340533+236650=3577183, hh:=226
+1008: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257
+1009: setchar71 ("47) h:=4068703+514261=4582964, hh:=290
+1010: right3 218453 h:=4582964+218453=4801417, hh:=304
+1014: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339
+1015: setchar97 ("61) h:=5347528+327680=5675208, hh:=360
+1016: setchar99 ("63) h:=5675208+291275=5966483, hh:=378
+1017: setchar114 ("72) h:=5966483+256683=6223166, hh:=394
+1018: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415
+1019: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427
+1020: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441
+1021: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473
+1022: setchar97 ("61) h:=7461080+327680=7788760, hh:=494
+1023: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506
+1024: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541
+1025: setchar97 ("61) h:=8516914+327680=8844594, hh:=562
+1026: setchar99 ("63) h:=8844594+291275=9135869, hh:=580
+1027: setchar114 ("72) h:=9135869+256683=9392552, hh:=596
+1028: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617
+1029: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629
+1030: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643
+1031: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675
+1032: setchar98 ("62) h:=10630466+364085=10994551, hh:=698
+1033: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710
+1034: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745
+1035: setchar97 ("61) h:=11722705+327680=12050385, hh:=765
+1036: setchar99 ("63) h:=12050385+291275=12341660, hh:=783
+1037: setchar114 ("72) h:=12341660+256683=12598343, hh:=799
+1038: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820
+1039: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832
+1040: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846
+1041: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878
+1042: setchar97 ("61) h:=13836257+327680=14163937, hh:=899
+1043: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911
+1044: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945
+1045: setchar97 ("61) h:=14892091+327680=15219771, hh:=966
+1046: setchar99 ("63) h:=15219771+291275=15511046, hh:=984
+1047: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000
+1048: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021
+1049: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033
+1050: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047
+1051: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079
+1052: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102
+1053: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114
+[MEANING macro:->a.macro:->b.macro:->a.macro:->b.]
+1054: pop
+level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237)
+1055: pop
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+1056: down3 1572864 v:=42152922+1572864=43725786, vv:=2770
+1060: eop
diff --git a/Build/source/texk/web2c/ptexdir/tests/pknj-e.log b/Build/source/texk/web2c/ptexdir/tests/pknj-e.log
new file mode 100644
index 00000000000..36de6fe134f
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/pknj-e.log
@@ -0,0 +1,223 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**printkanji
+(./printkanji.tex
+\openout1 = `p-pknj-e.out'.
+
+
+{MSG ^^c5^^bf ^^c5^^bf 顛 }
+{TOT ^^c5^^bf ^^c5^^bf 顛 }
+> \A=macro:
+->^^c5^^bf ^^c5^^bf 顛 .
+l.29 \show\A
+
+
+■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+> \B=macro:
+->macro:->^^c5^^bf ^^c5^^bf 顛 .
+l.40 \show\B
+
+
+■\jobname. {MSG *あ*p-pknj-e*:p-pknj-e:*macro:->:p-pknj-e:*}
+{TOT *あ*p-pknj-e*:p-pknj-e:*macro:->:p-pknj-e:*}
+
+■oneletter. {MSG \catcode`\^^c5= 197}
+{TOT \catcode`\^^c5= 197}
+{MSG \catcode`^^c5 = 197}
+{TOT \catcode`^^c5 = 197}
+{MSG \catcode`^^c5^^bf = 197}
+{TOT \catcode`^^c5^^bf = 197}
+{MSG \catcode`顛 = 50623}
+{TOT \catcode`顛 = 50623}
+■csname1.
+> \顛=macro:
+->hoge.
+l.72 \show\顛
+
+
+> \^^c5^^bf=macro:
+->piyo.
+l.73 \show\^^c5^^bf
+
+
+> \^^c5^^bf=macro:
+->piyo.
+<recently read> \^^c5^^bf
+
+l.74 \expandafter\show\csname ^^c5^^bf\endcsname
+
+
+{MSG \顛=>macro:->hoge}
+{TOT \顛=>macro:->hoge}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+
+{MSG \あ=> hoge, \^^a4^^a2=> piyo. \^^a4^^a2=> piyo. }
+{TOT \あ=> hoge, \^^a4^^a2=> piyo. \^^a4^^a2=> piyo. }
+■0xFF.
+{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m
+acro:->あ).}
+{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m
+acro:->あ).}
+{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+■contexts.
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1
+ \^^ff macro:->^^c5^^bf ^^c5^^bf 顛 ...
+l.136 \+\a
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+l.138 ...5^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a
+ \^^ff ^^ff\^^c5^^bf
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5
+ \^^ff\^^c4\^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4
+ \^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4\^^fe
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+\^^c5^^bf\^^ff^^c5
+! Undefined control sequence.
+\b ->\^^c5^^be
+ .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd
+ ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ...5^^be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼
+ .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be
+ .\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd
+ ..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼
+ .
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+■csname2.
+> \^^c5^^bf=macro:
+->a.
+l.162 SHOW \show\^^c5^^bf
+ .\show\顛.%
+
+> \顛=macro:
+->b.
+l.162 SHOW \show\^^c5^^bf.\show\顛
+ .%
+
+> \^^c5^^bf=macro:
+->a.
+<recently read> \^^c5^^bf
+
+l.163 \expandafter\show\csname ^^c5^^bf\endcsname
+ .%
+
+> \顛=macro:
+->b.
+<recently read> \顛
+
+l.164 \expandafter\show\csname 顛\endcsname
+
+
+\^^e3^^81^^82\あ [50623]
+Memory usage before: 1270&5512; after: 118&5077; still untouched: 4992459
+ )
+Here is how much of TeX's memory you used:
+ 25 strings out of 497935
+ 137 string characters out of 6219477
+ 7541 words of memory out of 5000000
+ 969 multiletter control sequences out of 15000+600000
+ 3271 words of font info for 2 fonts, out of 8000000 for 9000
+ 0 hyphenation exceptions out of 8191
+ 6i,4n,2p,97b,22s stack positions out of 10000i,1000n,20000p,200000b,200000s
+
+Output written on p-pknj-e.dvi (1 page, 1140 bytes).
diff --git a/Build/source/texk/web2c/ptexdir/tests/pknj-s.log b/Build/source/texk/web2c/ptexdir/tests/pknj-s.log
new file mode 100644
index 00000000000..1ef300b59d7
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/pknj-s.log
@@ -0,0 +1,223 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**printkanji
+(./printkanji.tex
+\openout1 = `p-pknj-s.out'.
+
+
+{MSG ^^c5^^bf ^^c5^^bf 顛 }
+{TOT ^^c5^^bf ^^c5^^bf 顛 }
+> \A=macro:
+->^^c5^^bf ^^c5^^bf 顛 .
+l.29 \show\A
+
+
+■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 }
+> \B=macro:
+->macro:->^^c5^^bf ^^c5^^bf 顛 .
+l.40 \show\B
+
+
+■\jobname. {MSG *あ*p-pknj-s*:p-pknj-s:*macro:->:p-pknj-s:*}
+{TOT *あ*p-pknj-s*:p-pknj-s:*macro:->:p-pknj-s:*}
+
+■oneletter. {MSG \catcode`\^^c5= 197}
+{TOT \catcode`\^^c5= 197}
+{MSG \catcode`^^c5 = 197}
+{TOT \catcode`^^c5 = 197}
+{MSG \catcode`^^c5^^bf = 197}
+{TOT \catcode`^^c5^^bf = 197}
+{MSG \catcode`顛 = 37726}
+{TOT \catcode`顛 = 37726}
+■csname1.
+> \顛=macro:
+->hoge.
+l.72 \show\顛
+
+
+> \^^c5^^bf=macro:
+->piyo.
+l.73 \show\^^c5^^bf
+
+
+> \^^c5^^bf=macro:
+->piyo.
+<recently read> \^^c5^^bf
+
+l.74 \expandafter\show\csname ^^c5^^bf\endcsname
+
+
+{MSG \顛=>macro:->hoge}
+{TOT \顛=>macro:->hoge}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf=>macro:->piyo}
+{TOT \^^c5^^bf=>macro:->piyo}
+{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.}
+
+{MSG \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. }
+{TOT \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. }
+■0xFF.
+{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m
+acro:->あ).}
+{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m
+acro:->あ).}
+{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).}
+■contexts.
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1
+ \^^ff macro:->^^c5^^bf ^^c5^^bf 顛 ...
+l.136 \+\a
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\@->\A \undefined
+
+\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@
+ ^^c5^^bf 顛
+l.138 ...5^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a
+ \^^ff ^^ff\^^c5^^bf
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5
+ \^^ff\^^c4\^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4
+ \^^fe
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.140 \^^c5\^^ff\^^c4\^^fe
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+\^^c5^^bf\^^ff^^c5
+! Undefined control sequence.
+\b ->\^^c5^^be
+ .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd
+ ..\転 .\顛 .\貼 .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+\b ...5^^be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼
+ .
+l.154 \b
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be
+ .\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd
+ ..\転.\顛.\貼.
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Undefined control sequence.
+l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼
+ .
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+■csname2.
+> \^^c5^^bf=macro:
+->a.
+l.162 SHOW \show\^^c5^^bf
+ .\show\顛.%
+
+> \顛=macro:
+->b.
+l.162 SHOW \show\^^c5^^bf.\show\顛
+ .%
+
+> \^^c5^^bf=macro:
+->a.
+<recently read> \^^c5^^bf
+
+l.163 \expandafter\show\csname ^^c5^^bf\endcsname
+ .%
+
+> \顛=macro:
+->b.
+<recently read> \顛
+
+l.164 \expandafter\show\csname 顛\endcsname
+
+
+\^^e3^^81^^82\あ [37726]
+Memory usage before: 1274&5515; after: 118&5078; still untouched: 4992456
+ )
+Here is how much of TeX's memory you used:
+ 24 strings out of 497935
+ 135 string characters out of 6219474
+ 7544 words of memory out of 5000000
+ 968 multiletter control sequences out of 15000+600000
+ 3271 words of font info for 2 fonts, out of 8000000 for 9000
+ 0 hyphenation exceptions out of 8191
+ 6i,4n,2p,97b,22s stack positions out of 10000i,1000n,20000p,200000b,200000s
+
+Output written on p-pknj-s.dvi (1 page, 1148 bytes).
diff --git a/Build/source/texk/web2c/ptexdir/tests/printkanji.tex b/Build/source/texk/web2c/ptexdir/tests/printkanji.tex
index a8f1d4cb5a0..d176d9a53bf 100644
--- a/Build/source/texk/web2c/ptexdir/tests/printkanji.tex
+++ b/Build/source/texk/web2c/ptexdir/tests/printkanji.tex
@@ -2,7 +2,16 @@
\tracingstats=1000
\noautoxspacing
\newlinechar=`\^^J
-\font\x=ec-lmtt10 \x
+\font\x=ec-lmr10 \x
+\ifx\kanjiskip\undefined\else
+ \ifnum\jis"2121="3000
+ \jfont\jpy=umin10 at 10pt\jpy
+ \else
+ \jfont\jpy=min10 at 10pt\jpy
+ \fi
+\fi
+
+
\immediate\openout1=\jobname.out
\def\MSG#1{%
\message{\string{MSG #1\string}}%
@@ -135,7 +144,6 @@ A: \A
\catcode`\^^bf=11
\catcode`\^^bd=11
\catcode`\^^ff=11
-\font\x=ec-lmtt10 \x\scrollmode
\def\^^c5^^bf{a}
\def\顛{b}
diff --git a/Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex b/Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex
index 5dce40d2e12..cf38ff5e8d6 100644
--- a/Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex
+++ b/Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex
@@ -1,4 +1,12 @@
-\font\fn=ec-lmr10\fn\catcode`\^^9f=11
+\font\fn=ec-lmr10\fn
+\ifx\kanjiskip\undefined\else
+ \ifnum\jis"2121="3000
+ \jfont\jpy=umin10 at 10pt\jpy
+ \else
+ \jfont\jpy=min10 at 10pt\jpy
+ \fi
+\fi
+\catcode`\^^9f=11
\def\◆{◇}\def\漢{◇}\def\^^9f{S}
\ptexlineendmode=0 % p4.0.0標準
diff --git a/Build/source/texk/web2c/ptexdir/tests/ucs-e.log b/Build/source/texk/web2c/ptexdir/tests/ucs-e.log
new file mode 100644
index 00000000000..33428e2db9e
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/ucs-e.log
@@ -0,0 +1,28 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**p-ucs
+(./p-ucs.tex
+<EUC>
+\ucs.
+\cntA=\count26
+162: 41457
+163: 41458
+165: 41455
+167: 41464
+168: 41391
+172: 41676
+176: 41451
+177: 41438
+180: 41389
+182: 41721
+215: 41439
+247: 41440
+\toucs.
+-1, -1, -1, -1, -1
+-1, 34821, 34722
+12354, 29081, -1
+41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676
+41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676
+41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/ptexdir/tests/ucs-s.log b/Build/source/texk/web2c/ptexdir/tests/ucs-s.log
new file mode 100644
index 00000000000..576b027e823
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/tests/ucs-s.log
@@ -0,0 +1,28 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**p-ucs
+(./p-ucs.tex
+<SJIS>
+\ucs.
+\cntA=\count26
+162: 33169
+163: 33170
+165: 33167
+167: 33176
+168: 33102
+172: 33226
+176: 33163
+177: 33149
+180: 33100
+182: 33271
+215: 33150
+247: 33152
+\toucs.
+-1, -1, -1, -1, -1
+12450, 29081, -1
+-1, -1, -1
+33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226
+33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226
+33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226
+ )
+No pages of output.
diff --git a/Build/source/texk/web2c/ptexdir/tests/ucs.tex b/Build/source/texk/web2c/ptexdir/tests/ucs.tex
index de8a32fc1df..520a7485d57 100644
--- a/Build/source/texk/web2c/ptexdir/tests/ucs.tex
+++ b/Build/source/texk/web2c/ptexdir/tests/ucs.tex
@@ -9,7 +9,8 @@
\typeout{\string\ucs.}
\newcount\cntA
\loop\ifnum\cntA<256
- \ifnum0>\ucs\cntA\else\typeout{\the\cntA: \ucs\cntA (\Uchar\ucs\cntA)}\fi
+ \ifnum0>\ucs\cntA\else\typeout{\the\cntA: \ucs\cntA %
+ \ifx\Uchar\undefined\else(\Uchar\ucs\cntA)\fi}\fi
\advance\cntA1
\repeat
@@ -23,6 +24,12 @@
\typeout{\toucs"0, \toucs"80, \toucs"D7, \toucs"A7, \toucs"10000}
\typeout{\toucs"8341, \toucs"EAA4, \toucs"EAA5}
\typeout{\toucs"A4A2, \toucs"F4A6, \toucs"F4A7}
+\typeout{\jis"2131, \jis"213D, \jis"2141, \jis"2142, \jis"2144,
+ \jis"215D, \jis"216F, \jis"2171, \jis"2172, \jis"224C}
+\typeout{\ucs"203E, \ucs"2014, \ucs"301C, \ucs"2016, \ucs"2026,
+ \ucs"2212, \ucs"00A5, \ucs"00A2, \ucs"00A3, \ucs"00AC}
+\typeout{\ucs"FFE3, \ucs"2015, \ucs"FF5E, \ucs"2225, \ucs"22EF,
+ \ucs"FF0D, \ucs"FFE5, \ucs"FFE0, \ucs"FFE1, \ucs"FFE2}
\bye
diff --git a/Build/source/texk/web2c/tests/dump-basic.tex b/Build/source/texk/web2c/tests/dump-basic.tex
new file mode 100644
index 00000000000..209f3630b56
--- /dev/null
+++ b/Build/source/texk/web2c/tests/dump-basic.tex
@@ -0,0 +1,6 @@
+\ifx\fmtname\undefined
+ \input basic
+ \def\fmtname{basic}
+ \expandafter\dump
+\fi
+\end
diff --git a/Build/source/texk/web2c/tests/ec-lmr10.tfm b/Build/source/texk/web2c/tests/ec-lmr10.tfm
new file mode 100644
index 00000000000..719e4f082e8
--- /dev/null
+++ b/Build/source/texk/web2c/tests/ec-lmr10.tfm
Binary files differ
diff --git a/Build/source/texk/web2c/texprofdir/doc/texprof.hnt b/Build/source/texk/web2c/texprofdir/doc/texprof.hnt
index b5beeebffe9..fb3d7c162f1 100644
--- a/Build/source/texk/web2c/texprofdir/doc/texprof.hnt
+++ b/Build/source/texk/web2c/texprofdir/doc/texprof.hnt
Binary files differ
diff --git a/Build/source/texk/web2c/texprofdir/doc/texprof.pdf b/Build/source/texk/web2c/texprofdir/doc/texprof.pdf
index 8cd616b4e8f..d07addfa31e 100644
--- a/Build/source/texk/web2c/texprofdir/doc/texprof.pdf
+++ b/Build/source/texk/web2c/texprofdir/doc/texprof.pdf
Binary files differ
diff --git a/Build/source/texk/web2c/texprofdir/texprof.w b/Build/source/texk/web2c/texprofdir/texprof.w
index 69cbbb942b0..722106017fa 100644
--- a/Build/source/texk/web2c/texprofdir/texprof.w
+++ b/Build/source/texk/web2c/texprofdir/texprof.w
@@ -31241,14 +31241,18 @@ Currently we use |timespec_get| under Windows and |clock_gettime|
with a tread specific clock otherwise.
@<get current time@>=
+#ifdef GETTIME
#if GETTIME==0
- time_error=clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
+ time_error=clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
#elif GETTIME==1
- time_error=clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts);
+ time_error=clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts);
#elif GETTIME==2
- time_error=clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+ time_error=clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
#elif GETTIME==3
- time_error=clock_gettime(CLOCK_MONOTONIC, &ts);
+ time_error=clock_gettime(CLOCK_MONOTONIC, &ts);
+#else
+ time_error=clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
+#endif
#else
/* guess a default */
#ifdef _WIN32
@@ -31258,6 +31262,7 @@ with a tread specific clock otherwise.
#endif
#endif
+
@ To record the timing information, we compute the time difference in
nano seconds, assuming that it fits into unsigned 32 bit which means
the difference should be less than about 4 seconds.
diff --git a/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja b/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja
index 99d2f7a9d38..c75986988ee 100644
--- a/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja
+++ b/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja
@@ -4,7 +4,7 @@
【著作権表示】
Copyright (C) 2009 ASCII MEDIA WORKS.
-Copyright (C) 2007-2023 Takuji Tanaka
+Copyright (C) 2007-2024 Takuji Tanaka
All rights reserved.
【契約条件】
diff --git a/Build/source/texk/web2c/uptexdir/ChangeLog b/Build/source/texk/web2c/uptexdir/ChangeLog
index a68dbcce2f4..cddcdef97d1 100644
--- a/Build/source/texk/web2c/uptexdir/ChangeLog
+++ b/Build/source/texk/web2c/uptexdir/ChangeLog
@@ -1,3 +1,40 @@
+2024-10-12 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * uptex-prim.test, tests/up-prim.{tex,log},
+ am/uptex.am: Add a test.
+ * uptex-m.ch: revision date.
+ * COPYRIGHT.ja: copyright year.
+
+2024-09-30 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * uptex-m.ch: kcatcode (latin_ucs(14)) is removed
+ since it will be supported in upTeX-2.00.
+
+2024-09-28 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * uptex-m.ch, upbibtex.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-16.0.0.txt Date: 2024-02-22".
+ Also add a new block
+ "CJK Unified Ideographs Extension J"
+ which is approved in Unicode 17.0, 2025.
+ * tests/unibib.{tex,bib,bbl}: Update a test.
+
+2024-09-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * ptex-base.ch, ptex_version.h: Version p4.1.2.
+
+2024-09-21 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * ptex-base.ch, uptex-m.ch:
+ Fix a bug in initialization of inhibit_xsp/kinsoku tables
+ (Bug introduced on commit 2022-12-12 r65248).
+
+2024-09-16 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * ptex-base.ch: Use constants enc_jis and enc_ucs.
+ * am/uptex.am: Tweak.
+
2024-05-18 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
* ptex-base.ch: Enable to get character codes
diff --git a/Build/source/texk/web2c/uptexdir/am/uptex.am b/Build/source/texk/web2c/uptexdir/am/uptex.am
index 1a4ee00d4c0..eb4a6e70760 100644
--- a/Build/source/texk/web2c/uptexdir/am/uptex.am
+++ b/Build/source/texk/web2c/uptexdir/am/uptex.am
@@ -171,11 +171,13 @@ uptex_tests = \
uptexdir/uptriptest.test uptexdir/ptriptest.test \
uptexdir/upver.test \
uptexdir/upkcat.test \
- uptexdir/wcfname.test uptexdir/wcfname0.test
+ uptexdir/wcfname.test uptexdir/wcfname0.test \
+ uptexdir/uptex-prim.test
uptexdir/uptriptest.log uptexdir/ptriptest.log: \
uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
uptexdir/upver.log uptexdir/upkcat.log \
- uptexdir/wcfname.log uptexdir/wcfname0.log: uptex$(EXEEXT)
+ uptexdir/wcfname.log uptexdir/wcfname0.log \
+ uptexdir/uptex-prim.log: uptex$(EXEEXT)
upweb_tests = \
uptexdir/upbibtex.test \
uptexdir/updvitype.test \
@@ -263,12 +265,16 @@ DISTCLEANFILES += uptests/ygk256*.*
DISTCLEANFILES += uptests/xskipjfmp.*
## uptexdir/uptriptest
EXTRA_DIST += uptexdir/uptrip/uptrip.diffs uptexdir/uptrip/texmf.cnf
+DISTCLEANFILES += uptrip.diffs
+
+## uptexdir/uptex-prim.test
+EXTRA_DIST += uptexdir/tests/up-prim.tex uptexdir/tests/up-prim.log
+DISTCLEANFILES += up-prim.*
+
uptrip.diffs: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
$(triptrap_diffs) $@
.PHONY: uptrip-clean
uptrip-clean:
rm -rf uptripdir
-DISTCLEANFILES += uptrip.diffs
-
# (end of uptex.am)
diff --git a/Build/source/texk/web2c/uptexdir/kanji.c b/Build/source/texk/web2c/uptexdir/kanji.c
index ddeca5a535c..b96fd48f086 100644
--- a/Build/source/texk/web2c/uptexdir/kanji.c
+++ b/Build/source/texk/web2c/uptexdir/kanji.c
@@ -45,7 +45,7 @@ boolean is_char_ascii(integer c)
boolean is_char_kanji(integer c)
{
- if (is_internalUPTEX())
+ if (is_internalUPTEX())
return ((c >= 0)&&(c<IVS_CHAR_LIMIT));
else
return iskanji1(Hi(c)) && iskanji2(Lo(c));
@@ -91,8 +91,8 @@ integer ktoken_to_chr(integer c)
}
/* Ref. http://www.unicode.org/Public/UNIDATA/Blocks.txt */
-/* # Blocks-15.1.0.txt */
-/* # Date: 2023-07-28, 15:47:20 GMT */
+/* # Blocks-16.0.0.txt */
+/* # Date: 2024-02-22 */
static long ucs_range[]={
0x0000, /* Basic Latin */ /* 0x00 */
0x0080, /* Latin-1 Supplement */
@@ -279,14 +279,15 @@ static long ucs_range[]={
0x10500, /* Elbasan */
0x10530, /* Caucasian Albanian */
0x10570, /* Vithkuqi */
+ 0x105C0, /* Todhri */
0x10600, /* Linear A */
0x10780, /* Latin Extended-F */
0x10800, /* Cypriot Syllabary */
0x10840, /* Imperial Aramaic */
0x10860, /* Palmyrene */
0x10880, /* Nabataean */
- 0x108E0, /* Hatran */
- 0x10900, /* Phoenician */ /* 0xc0 */
+ 0x108E0, /* Hatran */ /* 0xc0 */
+ 0x10900, /* Phoenician */
0x10920, /* Lydian */
0x10980, /* Meroitic Hieroglyphs */
0x109A0, /* Meroitic Cursive */
@@ -301,8 +302,9 @@ static long ucs_range[]={
0x10C00, /* Old Turkic */
0x10C80, /* Old Hungarian */
0x10D00, /* Hanifi Rohingya */
+ 0x10D40, /* Garay */ /* 0xd0 */
0x10E60, /* Rumi Numeral Symbols */
- 0x10E80, /* Yezidi */ /* 0xd0 */
+ 0x10E80, /* Yezidi */
0x10EC0, /* Arabic Extended-C */
0x10F00, /* Old Sogdian */
0x10F30, /* Sogdian */
@@ -316,26 +318,29 @@ static long ucs_range[]={
0x11150, /* Mahajani */
0x11180, /* Sharada */
0x111E0, /* Sinhala Archaic Numbers */
- 0x11200, /* Khojki */
+ 0x11200, /* Khojki */ /* 0xe0 */
0x11280, /* Multani */
- 0x112B0, /* Khudawadi */ /* 0xe0 */
+ 0x112B0, /* Khudawadi */
0x11300, /* Grantha */
+ 0x11380, /* Tulu-Tigalaria */
0x11400, /* Newa */
0x11480, /* Tirhuta */
0x11580, /* Siddham */
0x11600, /* Modi */
0x11660, /* Mongolian Supplement */
0x11680, /* Takri */
+ 0x116D0, /* Myanmar Extended-C */
0x11700, /* Ahom */
0x11800, /* Dogra */
0x118A0, /* Warang Citi */
0x11900, /* Dives Akuru */
- 0x119A0, /* Nandinagari */
+ 0x119A0, /* Nandinagari */ /* 0xf0 */
0x11A00, /* Zanabazar Square */
0x11A50, /* Soyombo */
0x11AB0, /* Unified Canadian Aboriginal Syllabics Extended-A */
- 0x11AC0, /* Pau Cin Hau */ /* 0xf0 */
+ 0x11AC0, /* Pau Cin Hau */
0x11B00, /* Devanagari Extended-A */
+ 0x11BC0, /* Sunuwar */
0x11C00, /* Bhaiksuki */
0x11C70, /* Marchen */
0x11D00, /* Masaram Gondi */
@@ -345,20 +350,23 @@ static long ucs_range[]={
0x11FB0, /* Lisu Supplement */
0x11FC0, /* Tamil Supplement */
0x12000, /* Cuneiform */
- 0x12400, /* Cuneiform Numbers and Punctuation */
+ 0x12400, /* Cuneiform Numbers and Punctuation */ /* 0x100 */
0x12480, /* Early Dynastic Cuneiform */
0x12F90, /* Cypro-Minoan */
0x13000, /* Egyptian Hieroglyphs */
0x13430, /* Egyptian Hieroglyph Format Controls */
- 0x14400, /* Anatolian Hieroglyphs */ /* 0x100 */
+ 0x13460, /* Egyptian Hieroglyphs Extended-A */
+ 0x14400, /* Anatolian Hieroglyphs */
+ 0x16100, /* Gurung Khema */
0x16800, /* Bamum Supplement */
0x16A40, /* Mro */
0x16A70, /* Tangsa */
0x16AD0, /* Bassa Vah */
0x16B00, /* Pahawh Hmong */
+ 0x16D40, /* Kirat Rai */
0x16E40, /* Medefaidrin */
0x16F00, /* Miao */
- 0x16FE0, /* Ideographic Symbols and Punctuation */
+ 0x16FE0, /* Ideographic Symbols and Punctuation */ /* 0x110 */
0x17000, /* Tangut */
0x18800, /* Tangut Components */
0x18B00, /* Khitan Small Script */
@@ -366,14 +374,15 @@ static long ucs_range[]={
0x1AFF0, /* Kana Extended-B */
0x1B000, /* Kana Supplement */
0x1B100, /* Kana Extended-A */
- 0x1B130, /* Small Kana Extension */ /* 0x110 */
+ 0x1B130, /* Small Kana Extension */
0x1B170, /* Nushu */
0x1BC00, /* Duployan */
0x1BCA0, /* Shorthand Format Controls */
+ 0x1CC00, /* Symbols for Legacy Computing Supplement */
0x1CF00, /* Znamenny Musical Notation */
0x1D000, /* Byzantine Musical Symbols */
0x1D100, /* Musical Symbols */
- 0x1D200, /* Ancient Greek Musical Notation */
+ 0x1D200, /* Ancient Greek Musical Notation */ /* 0x120 */
0x1D2C0, /* Kaktovik Numerals */
0x1D2E0, /* Mayan Numerals */
0x1D300, /* Tai Xuan Jing Symbols */
@@ -382,13 +391,14 @@ static long ucs_range[]={
0x1D800, /* Sutton SignWriting */
0x1DF00, /* Latin Extended-G */
0x1E000, /* Glagolitic Supplement */
- 0x1E030, /* Cyrillic Extended-D */ /* 0x120 */
+ 0x1E030, /* Cyrillic Extended-D */
0x1E100, /* Nyiakeng Puachue Hmong */
0x1E290, /* Toto */
0x1E2C0, /* Wancho */
0x1E4D0, /* Nag Mundari */
+ 0x1E5D0, /* Ol Onal */
0x1E7E0, /* Ethiopic Extended-B */
- 0x1E800, /* Mende Kikakui */
+ 0x1E800, /* Mende Kikakui */ /* 0x130 */
0x1E900, /* Adlam */
0x1EC70, /* Indic Siyaq Numbers */
0x1ED00, /* Ottoman Siyaq Numbers */
@@ -398,13 +408,13 @@ static long ucs_range[]={
0x1F0A0, /* Playing Cards */
0x1F100, /* Enclosed Alphanumeric Supplement */
0x1F200, /* Enclosed Ideographic Supplement */
- 0x1F300, /* Miscellaneous Symbols and Pictographs */ /* 0x130 */
+ 0x1F300, /* Miscellaneous Symbols and Pictographs */
0x1F600, /* Emoticons */
0x1F650, /* Ornamental Dingbats */
0x1F680, /* Transport and Map Symbols */
0x1F700, /* Alchemical Symbols */
0x1F780, /* Geometric Shapes Extended */
- 0x1F800, /* Supplemental Arrows-C */
+ 0x1F800, /* Supplemental Arrows-C */ /* 0x140 */
0x1F900, /* Supplemental Symbols and Pictographs */
0x1FA00, /* Chess Symbols */
0x1FA70, /* Symbols and Pictographs Extended-A */
@@ -414,12 +424,13 @@ static long ucs_range[]={
0x2B740, /* CJK Unified Ideographs Extension D */
0x2B820, /* CJK Unified Ideographs Extension E */
0x2CEB0, /* CJK Unified Ideographs Extension F */
- 0x2EBF0, /* CJK Unified Ideographs Extension I */ /* 0x140 */
+ 0x2EBF0, /* CJK Unified Ideographs Extension I */
0x2F800, /* CJK Compatibility Ideographs Supplement */
0x30000, /* CJK Unified Ideographs Extension G */
0x31350, /* CJK Unified Ideographs Extension H */
- 0x323B0, /* reserved */
- 0x40000, /* reserved */
+ 0x323B0, /* CJK Unified Ideographs Extension J (Unicode 17.0) */
+ 0x33480, /* reserved */
+ 0x40000, /* reserved */ /* 0x150 */
0x50000, /* reserved */
0x60000, /* reserved */
0x70000, /* reserved */
@@ -430,14 +441,14 @@ static long ucs_range[]={
0xC0000, /* reserved */
0xD0000, /* reserved */
0xE0000, /* Tags */
- 0xE0100, /* Variation Selectors Supplement */ /* 0x150 */
+ 0xE0100, /* Variation Selectors Supplement */
0xE01F0, /* reserved */
0xF0000, /* Supplementary Private Use Area-A */
0x100000, /* Supplementary Private Use Area-B */
/* Value over 0x10FFFF is illegal under Unicode,
- They are for some special use. *** experimental *** */
+ We use for some special application. */
0x110000, /* Reserved */
- 0x120000, /* Reserved */
+ 0x120000, /* Reserved */ /* 0x160 */
0x130000, /* Reserved */
0x140000, /* Reserved */
0x150000, /* Reserved */
@@ -448,20 +459,20 @@ static long ucs_range[]={
0x1A0000, /* Reserved */
0x1B0000, /* Reserved */
0x1C0000, /* Reserved */
- 0x1D0000, /* Reserved */ /* 0x160 */
+ 0x1D0000, /* Reserved */
0x1E0000, /* Reserved */
0x1F0000, /* Reserved */
0x200000, /* Reserved */
0x210000, /* Reserved */
- 0x220000, /* Kana with Voiced Sound Mark */
+ 0x220000, /* Kana with Voiced Sound Mark */ /* 0x170 */
0x240000, /* Kana with Semi-Voiced Sound Mark */
0x25E6E6, /* Emoji Flag Sequence */
0x260000, /* Emoji with Modifier Fitzpatrick */
0x300000, /* Reserved */
0x400000, /* Standardized Variation Sequence */
0x800000, /* Emoji Keycap Sequence */
- 0x800080, /* Ideographic Variation Sequence */ /* 0x16C */
- CJK_CHAR_LIMIT, /* Ideographic Variation Sequence, VS49..VS256 */
+ 0x800080, /* Ideographic Variation Sequence, VS17..VS48 */
+ CJK_CHAR_LIMIT, /* Ideographic Variation Sequence, VS49..VS256 */ /* 0x178 */
IVS_CHAR_LIMIT
};
@@ -544,11 +555,11 @@ integer kcatcodekey(integer c)
if ( COMBINING_ENCLOSING_KEYCAP==c )
return 0x1FA;
break;
- case 0x12e: /* Block : Enclosed Alphanumeric Supplement */
+ case 0x138: /* Block : Enclosed Alphanumeric Supplement */
if ( REGIONAL_INDICATOR_SYMBOL_LETTER_A <=c && c<= REGIONAL_INDICATOR_SYMBOL_LETTER_Z )
return 0x1FB;
break;
- case 0x130: /* Block : Miscellaneous Symbols and Pictographs */
+ case 0x13a: /* Block : Miscellaneous Symbols and Pictographs */
if ( EMOJI_MODIFIER_FITZPATRIC_TYPE1_2 <=c && c<= EMOJI_MODIFIER_FITZPATRIC_TYPE6 )
return 0x1FC;
break;
diff --git a/Build/source/texk/web2c/uptexdir/ptex-base.ch b/Build/source/texk/web2c/uptexdir/ptex-base.ch
index 6b77387d58e..36496b2e4b2 100644
--- a/Build/source/texk/web2c/uptexdir/ptex-base.ch
+++ b/Build/source/texk/web2c/uptexdir/ptex-base.ch
@@ -74,6 +74,8 @@
% (2022-10-24) HY pTeX p4.1.0 Add new syntax \font [in jis/ucs].
% New primitives: \tojis, \ptextracingfonts and \ptexfontname.
% (2023-09-17) HY pTeX p4.1.1 Support more than 256 different glue/kern.
+% (2024-09-22) HK pTeX p4.1.2 Enable to get character codes
+% from control symbols by using backquote.
@x
% Here is TeX material that gets inserted after \input webmac
@@ -88,8 +90,8 @@
@y
@d pTeX_version=4
@d pTeX_minor_version=1
-@d pTeX_revision==".1"
-@d pTeX_version_string=='-p4.1.1' {current \pTeX\ version}
+@d pTeX_revision==".2"
+@d pTeX_version_string=='-p4.1.2' {current \pTeX\ version}
@#
@d pTeX_banner=='This is pTeX, Version 3.141592653',pTeX_version_string
@d pTeX_banner_k==pTeX_banner
@@ -1305,10 +1307,11 @@ for k:=0 to 255 do
begin cat_code(k):=other_char; kcat_code(k):=other_kchar;
math_code(k):=hi(k); sf_code(k):=1000;
auto_xsp_code(k):=0;
+ inhibit_xsp_type(k):=0; kinsoku_type(k):=0;
end;
for k:=0 to 1023 do
- begin inhibit_xsp_code(k):=0; inhibit_xsp_type(k):=0;
- kinsoku_code(k):=0; kinsoku_type(k):=0;
+ begin inhibit_xsp_code(k):=0;
+ kinsoku_code(k):=0;
end;
@z
@x [17.232] l.4971 - pTeX: initialize cat_code, cur_jfont, cur_tfont
@@ -1523,6 +1526,9 @@ primitive("ptextracingfonts",assign_int,int_base+ptex_tracing_fonts_code);@/
@d v_offset==dimen_par(v_offset_code)
@d t_baseline_shift==dimen_par(t_baseline_shift_code)
@d y_baseline_shift==dimen_par(y_baseline_shift_code)
+@#
+@d enc_jis=1
+@d enc_ucs=2
@z
@x l.5542 - pTeX:
@@ -1660,8 +1666,8 @@ procedure print_font_dir_and_enc(f:internal_font_number);
begin
if font_dir[f]=dir_tate then print("/TATE")
else if font_dir[f]=dir_yoko then print("/YOKO");
- if font_enc[f]=2 then print("+Unicode")
- else if font_enc[f]=1 then print("+JIS");
+ if font_enc[f]=enc_ucs then print("+Unicode")
+ else if font_enc[f]=enc_jis then print("+JIS");
end;
@z
@@ -3324,9 +3330,9 @@ if jfm_flag<>dir_default then
for k:=ctype_base[f] to ctype_base[f]+nt-1 do
begin
fget; read_twentyfourx(cx);
- if jfm_enc=2 then {Unicode TFM}
+ if jfm_enc=enc_ucs then {Unicode TFM}
font_info[k].hh.rh:=toDVI(fromUCS(cx))
- else if jfm_enc=1 then {JIS-encoded TFM}
+ else if jfm_enc=enc_jis then {JIS-encoded TFM}
font_info[k].hh.rh:=toDVI(fromJIS(cx))
else
font_info[k].hh.rh:=tokanji(cx); {|kchar_code|}
@@ -3584,9 +3590,9 @@ continue:
end;
p:=link(p);
jc:=KANJI(info(p));
- if font_enc[f]=2 then {Unicode TFM}
+ if font_enc[f]=enc_ucs then {Unicode TFM}
jc:=toUCS(jc)
- else if font_enc[f]=1 then {JIS-encoded TFM}
+ else if font_enc[f]=enc_jis then {JIS-encoded TFM}
begin if toJIS(jc)=0 then char_warning_jis(f,jc);
jc:=toJIS(jc); end
else
@@ -7075,8 +7081,8 @@ exit:end;
@ @<Scan the font encoding specification@>=
begin jfm_enc:=0;
if scan_keyword_noexpand("in") then
- if scan_keyword_noexpand("jis") then jfm_enc:=1
- else if scan_keyword_noexpand("ucs") then jfm_enc:=2
+ if scan_keyword_noexpand("jis") then jfm_enc:=enc_jis
+ else if scan_keyword_noexpand("ucs") then jfm_enc:=enc_ucs
else begin
print_err("Unknown TFM encoding");
@.Unknown TFM encoding@>
diff --git a/Build/source/texk/web2c/uptexdir/ptex_version.h b/Build/source/texk/web2c/uptexdir/ptex_version.h
index 13e0f1467b3..247aabb113d 100644
--- a/Build/source/texk/web2c/uptexdir/ptex_version.h
+++ b/Build/source/texk/web2c/uptexdir/ptex_version.h
@@ -1 +1 @@
-#define PTEX_VERSION "p4.1.1"
+#define PTEX_VERSION "p4.1.2"
diff --git a/Build/source/texk/web2c/uptexdir/tests/unibib.bbl b/Build/source/texk/web2c/uptexdir/tests/unibib.bbl
index e61fc1c3474..b65e9ec58b9 100644
--- a/Build/source/texk/web2c/uptexdir/tests/unibib.bbl
+++ b/Build/source/texk/web2c/uptexdir/tests/unibib.bbl
@@ -1,4 +1,4 @@
-\begin{thebibliography}{1}
+\begin{thebibliography}{10}
\bibitem{björk2020}
Tomas Björk.
@@ -22,6 +22,11 @@ Dustin Boswell and Trevor Foucher.
\newblock 구운몽.
\newblock 高麗書林, 1975.
+\bibitem{imahashi}
+𫝆𫞎姬, 𡈽𪧦, 𠮷田真.
+\newblock CJK統合漢字拡張🄑--🄓のテスト --- その🄰.
+\newblock 冬𠘨𫝷, 2024.
+
\bibitem{nikos}
Νίκος Καζαντζάκης.
\newblock {\em Συμπόσιον}.
diff --git a/Build/source/texk/web2c/uptexdir/tests/unibib.bib b/Build/source/texk/web2c/uptexdir/tests/unibib.bib
index 11e6baa22a8..d4c45d08e12 100644
--- a/Build/source/texk/web2c/uptexdir/tests/unibib.bib
+++ b/Build/source/texk/web2c/uptexdir/tests/unibib.bib
@@ -79,3 +79,25 @@
publisher = "Snowman commedian Press",
year = 2020,
}
+
+%% CJK統合漢字拡張B-Dのテスト
+@book{imahashi,
+ author = "𫝆𫞎 姬 and 𡈽 𪧦 and 𠮷田 真",
+ yomi = "Hime Imahashi",
+ title = "CJK統合漢字拡張🄑--🄓のテスト --- その🄰",
+ publisher = "冬𠘨𫝷",
+ year = 2024,
+}
+% 𫝆 U+2B746 CJK Unified Ideographs Extension D AJ:13780
+% 𫞎 U+2B78E CJK Unified Ideographs Extension D AJ:13724
+% 姬 U+2F862 CJK Compatibility Ideographs Supplement AJ:13998
+% 𡈽 U+2123D CJK Unified Ideographs Extension B AJ:13953 J3-2F42
+% 𪧦 U+2A9E6 CJK Unified Ideographs Extension C AJ:14145
+% 𠮷 U+20BB7 CJK Unified Ideographs Extension B AJ:13706
+% 真 U+2F947 CJK Compatibility Ideographs Supplement AJ:13854
+% 冬 U+2F81A CJK Compatibility Ideographs Supplement AJ:13954
+% 𠘨 U+20628 CJK Unified Ideographs Extension B AJ:14105 J4-2332
+% 𫝷 U+2B777 CJK Unified Ideographs Extension D AJ:13782
+% 🄑 U+1F111 Parenthesized Latin Capital Letter B
+% 🄓 U+1F113 Parenthesized Latin Capital Letter B
+% 🄰 U+1F130 Squared Latin Capital Letter A
diff --git a/Build/source/texk/web2c/uptexdir/tests/unibib.tex b/Build/source/texk/web2c/uptexdir/tests/unibib.tex
index 918d11f37b2..73e6a744d7a 100644
--- a/Build/source/texk/web2c/uptexdir/tests/unibib.tex
+++ b/Build/source/texk/web2c/uptexdir/tests/unibib.tex
@@ -82,6 +82,15 @@
publisher = "Snowman commedian Press",
year = 2020,
}
+
+%% CJK統合漢字拡張B-Dのテスト
+@book{imahashi,
+ author = "𫝆𫞎 姬 and 𡈽 𪧦 and 𠮷田 真",
+ yomi = "Hime Imahashi",
+ title = "CJK統合漢字拡張🄑--🄓のテスト --- その🄰",
+ publisher = "冬𠘨𫝷",
+ year = 2024,
+}
\end{filecontents}
\documentclass{ltjsarticle}
diff --git a/Build/source/texk/web2c/uptexdir/tests/up-prim.log b/Build/source/texk/web2c/uptexdir/tests/up-prim.log
new file mode 100644
index 00000000000..f8d6b63565b
--- /dev/null
+++ b/Build/source/texk/web2c/uptexdir/tests/up-prim.log
@@ -0,0 +1,9 @@
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**up-prim
+(./up-prim.tex
+15: \^^c5^^93. \^^c5^^93.
+18: \œ. \œ.
+15: \^^c3^^a6. \^^c3^^a6.
+18: \æ. \æ. )
+No pages of output.
diff --git a/Build/source/texk/web2c/uptexdir/tests/up-prim.tex b/Build/source/texk/web2c/uptexdir/tests/up-prim.tex
new file mode 100644
index 00000000000..e2f0445ea77
--- /dev/null
+++ b/Build/source/texk/web2c/uptexdir/tests/up-prim.tex
@@ -0,0 +1,33 @@
+% Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+% You may freely use, modify and/or distribute this file.
+%
+\tracingmacros=2
+\tracingonline=1
+%----
+\newlinechar=10
+
+%\catcode"0153=12
+\kcatcode"0153=15\relax
+\message{^^J\the\kcatcode"153:
+ \string\œ. \expandafter\string\csname œ\endcsname. %
+ }
+
+\kcatcode"0153=18\relax
+\message{^^J\the\kcatcode"153:
+ \string\œ. \expandafter\string\csname œ\endcsname. %
+ }
+
+%\catcode"E6=12
+\kcatcode"E6=15\relax
+\message{^^J\the\kcatcode"E6:
+ \string\æ. \expandafter\string\csname æ\endcsname. %
+ }
+
+\kcatcode"E6=18\relax
+\message{^^J\the\kcatcode"E6:
+ \string\æ. \expandafter\string\csname æ\endcsname. %
+ }
+%----
+\setbox0=\vbox{} % no dvi output
+
+\end
diff --git a/Build/source/texk/web2c/uptexdir/upbibtex.ch b/Build/source/texk/web2c/uptexdir/upbibtex.ch
index 36c44471552..4c21ee3efcd 100644
--- a/Build/source/texk/web2c/uptexdir/upbibtex.ch
+++ b/Build/source/texk/web2c/uptexdir/upbibtex.ch
@@ -968,7 +968,7 @@ function is_char_kanji_upbibtex(@!c:integer):boolean;
label exit;
var k:integer;
begin
- { based on upTeX-1.30 kcatcode status: 16,17,19->true / 15,18->false }
+ { based on upTeX-1.35 kcatcode status: 16,17,19->true / 15,18->false }
is_char_kanji_upbibtex := true;
if (is_internalUPTEX) then begin { should be in sync with |kcat_code| of uptex-m.ch }
k := kcatcodekey(c);
@@ -985,8 +985,8 @@ begin
else if k=@"93 then return { Hangul Syllables }
else if k=@"94 then return { Hangul Jamo Extended-B }
else if k=@"99 then return { CJK Compatibility Ideographs }
- else if (k>=@"10D)and(k<=@"110) then return { Kana Extended-B .. Small Kana Extension }
- else if (k>=@"13B)and(k<=@"143) then return { CJK Unified Ideographs Extension B .. H }
+ else if (k>=@"115)and(k<=@"118) then return { Kana Extended-B .. Small Kana Extension }
+ else if (k>=@"145)and(k<=@"14F) then return { CJK Unified Ideographs Extension B .. J }
else if k=@"1FE then return { Fullwidth digit and latin alphabet }
else if k=@"1FF then return; { Halfwidth katakana }
end
diff --git a/Build/source/texk/web2c/uptexdir/uptex-m.ch b/Build/source/texk/web2c/uptexdir/uptex-m.ch
index f4b7c7272d9..5c91e61ca1f 100644
--- a/Build/source/texk/web2c/uptexdir/uptex-m.ch
+++ b/Build/source/texk/web2c/uptexdir/uptex-m.ch
@@ -48,7 +48,7 @@
% (2022-07-23) TTK upTeX u1.29
% (2022-12-09) HK Hironori Kitagawa fixed a bug in \char, \kchar.
% (2023-09-16) TTK upTeX u1.30
-% (2024-05-01) TTK upTeX u1.35
+% (2024-09-30) TTK upTeX u1.35
@x
\def\pTeX{p\kern-.15em\TeX}
@@ -176,7 +176,6 @@ else if (kcode_pos=1)or((kcode_pos>=@'11)and(kcode_pos<=@'12))
@d other_kchar=18 {kanji codes}
@d max_char_code=18 {largest catcode for individual characters}
@y
-@d latin_ucs=14 {is not cjk characters in ucs code}
@d not_cjk=15 {is not cjk characters}
@d kanji=16 {kanji}
@d kana=17 {hiragana, katakana, alphabet}
@@ -239,6 +238,7 @@ for k:=0 to 255 do
begin cat_code(k):=other_char; kcat_code(k):=other_kchar;
math_code(k):=hi(k); sf_code(k):=1000;
auto_xsp_code(k):=0;
+ inhibit_xsp_type(k):=0; kinsoku_type(k):=0;
end;
@y
eqtb[auto_xspacing_code]:=eqtb[cat_code_base];
@@ -247,6 +247,7 @@ for k:=0 to 255 do
begin cat_code(k):=other_char;
math_code(k):=hi(k); sf_code(k):=1000;
auto_xsp_code(k):=0;
+ inhibit_xsp_type(k):=0; kinsoku_type(k):=0;
end;
for k:=0 to 511 do
begin kcat_code(k):=other_kchar;
@@ -281,12 +282,12 @@ if (isinternalUPTEX) then begin
@t\hskip10pt@>kcat_code(@"99):=kanji; { CJK Compatibility Ideographs }
@t\hskip10pt@>kcat_code(@"9C):=modifier; { Variation Selectors }
{ \hskip10pt|kcat_code(@"A2):=other_kchar;| Halfwidth and Fullwidth Forms }
- @+@t\1@>for k:=@"10D to @"110 do kcat_code(k):=kana; { Kana Extended-B .. Small Kana Extension }
- @+@t\1@>for k:=@"13B to @"143 do kcat_code(k):=kanji; { CJK Unified Ideographs Extension B .. H }
- @t\hskip10pt@>kcat_code(@"150):=modifier; { Variation Selectors Supplement }
- @+@t\1@>for k:=@"165 to @"166 do kcat_code(k):=kana; { Kana with (Semi-)Voiced Sound Mark }
- @t\hskip10pt@>kcat_code(@"16A):=kanji; { Standardized Variation Sequence }
- @+@t\1@>for k:=@"16C to @"16D do kcat_code(k):=kanji; { Ideographic Variation Sequence }
+ @+@t\1@>for k:=@"115 to @"118 do kcat_code(k):=kana; { Kana Extended-B .. Small Kana Extension }
+ @+@t\1@>for k:=@"145 to @"14F do kcat_code(k):=kanji; { CJK Unified Ideographs Extension B .. J }
+ @t\hskip10pt@>kcat_code(@"15B):=modifier; { Variation Selectors Supplement }
+ @+@t\1@>for k:=@"170 to @"171 do kcat_code(k):=kana; { Kana with (Semi-)Voiced Sound Mark }
+ @t\hskip10pt@>kcat_code(@"175):=kanji; { Standardized Variation Sequence }
+ @+@t\1@>for k:=@"177 to @"178 do kcat_code(k):=kanji; { Ideographic Variation Sequence }
@+@t\1@>for k:=@"1F9 to @"1FC do kcat_code(k):=modifier;
{ Combining Katakana-Hiragana (Semi-)Voiced Sound Mark .. Emoji Modifier Fitzpatrick }
@t\hskip10pt@>kcat_code(@"1FD):=not_cjk; { Latin-1 Letters }
@@ -426,7 +427,6 @@ if ((kcp mod @'10)>0)and(nrestmultichr(kcp)>0) then p:=p-(kcp mod @'10);
cur_chr:=fromBUFF(ustringcast(buffer), limit+1, loc);
cur_cmd:=kcat_code(kcatcodekey(cur_chr));
if (multistrlen(ustringcast(buffer), limit+1, loc)>1) and check_kcat_code(cur_cmd,cur_chr) then begin
- if (cur_cmd=latin_ucs) then cur_cmd:=cat_code(cur_chr);
if (cur_cmd=not_cjk) then cur_cmd:=other_kchar;
for l:=loc to loc-1+multistrlen(ustringcast(buffer), limit+1, loc) do
buffer2[l]:=1;
@@ -477,7 +477,6 @@ else begin k:=loc;
cur_chr:=fromBUFF(ustringcast(buffer), limit+1, k);
cat:=kcat_code(kcatcodekey(cur_chr));
if (multistrlen(ustringcast(buffer), limit+1, k)>1) and check_kcat_code(cat,cur_chr) then begin
- if (cat=latin_ucs) then cat:=cat_code(cur_chr);
if (cat=not_cjk) then cat:=other_kchar;
for l:=k to k-1+multistrlen(ustringcast(buffer), limit+1, k) do
buffer2[l]:=1;
@@ -520,7 +519,6 @@ begin repeat
cur_chr:=fromBUFF(ustringcast(buffer), limit+1, k);
cat:=kcat_code(kcatcodekey(cur_chr));
if (multistrlen(ustringcast(buffer), limit+1, k)>1) and check_kcat_code(cat,cur_chr) then begin
- if (cat=latin_ucs) then cat:=cat_code(cur_chr);
if (cat=not_cjk) then cat:=other_kchar;
for l:=k to k-1+multistrlen(ustringcast(buffer), limit+1, k) do
buffer2[l]:=1;
@@ -575,8 +573,6 @@ if cat=other_kchar then k:=k-multilenbuffchar(cur_chr)+1; {now |k| points to fir
cur_tok:=(kanji_ivs*max_cjk_val)+cur_chr
else
cur_tok:=(cur_cmd*max_cjk_val)+cur_chr
- else if (cur_cmd=latin_ucs) then
- cur_tok:=(cat_code(cur_chr)*max_cjk_val)+cur_chr
else cur_tok:=(cur_cmd*max_char_val)+cur_chr
@z
@@ -610,8 +606,6 @@ if cat=other_kchar then k:=k-multilenbuffchar(cur_chr)+1; {now |k| points to fir
cur_tok:=(kanji_ivs*max_cjk_val)+cur_chr
else
cur_tok:=(cur_cmd*max_cjk_val)+cur_chr
- else if (cur_cmd=latin_ucs) then
- cur_tok:=(cat_code(cur_chr)*max_cjk_val)+cur_chr
else cur_tok:=(cur_cmd*max_char_val)+cur_chr
@z
@@ -625,8 +619,6 @@ if cat=other_kchar then k:=k-multilenbuffchar(cur_chr)+1; {now |k| points to fir
cur_tok:=(kanji_ivs*max_cjk_val)+cur_chr
else
cur_tok:=(cur_cmd*max_cjk_val)+cur_chr
- else if (cur_cmd=latin_ucs) then
- cur_tok:=(cat_code(cur_chr)*max_cjk_val)+cur_chr
else cur_tok:=(cur_cmd*max_char_val)+cur_chr
@z
@@ -696,7 +688,6 @@ while k<pool_ptr do
begin t:=so(str_pool[k]);
if t>=@"180 then { there is no |wchar_token| whose code is 0--127. }
begin t:=fromBUFFshort(str_pool, pool_ptr, k); cc:=kcat_code(kcatcodekey(t));
- if (cc=latin_ucs) then cc:=other_char;
if (cc=not_cjk) then cc:=other_kchar;
if (cc=kanji)and(t>=max_cjk_val) then cc:=kanji_ivs;
t:=t+cc*max_cjk_val;
@@ -1186,7 +1177,7 @@ kchar_given: begin print_esc("kchar"); print_hex(chr_code);
if cur_chr=kcat_code_base then m:=kanji else m:=0
@y
@ @<Let |m| be the minimal...@>=
-if cur_chr=kcat_code_base then m:=latin_ucs else m:=0
+if cur_chr=kcat_code_base then m:=not_cjk else m:=0
@z
@x
@@ -1330,8 +1321,6 @@ begin if is_char_node(link(p)) then
info(main_p):=KANJI(cur_chr)+cur_cmd*max_cjk_val
else if cur_cmd=not_cjk then
info(main_p):=KANJI(cur_chr)+other_kchar*max_cjk_val
- else if cur_cmd=latin_ucs then
- info(main_p):=KANJI(cur_chr)+cat_code(cur_chr)*max_cjk_val
else { Does this case occur? }
info(main_p):=KANJI(cur_chr)+kcat_code(kcatcodekey(KANJI(cur_chr)))*max_cjk_val;
@z
@@ -1426,7 +1415,7 @@ end;
function check_kcat_code(@!ct:integer;@!cx:integer):integer;
begin
-if (((ct>=kanji)or((ct=latin_ucs)and(cx<max_ucs_val)))and(enable_cjk_token=0))or(enable_cjk_token=2)then
+if ((ct>=kanji)and(enable_cjk_token=0))or(enable_cjk_token=2)then
check_kcat_code:=1
else check_kcat_code:=0;
end;
diff --git a/Build/source/texk/web2c/uptexdir/uptex-prim.test b/Build/source/texk/web2c/uptexdir/uptex-prim.test
new file mode 100755
index 00000000000..ee07787e80c
--- /dev/null
+++ b/Build/source/texk/web2c/uptexdir/uptex-prim.test
@@ -0,0 +1,30 @@
+#! /bin/sh -vx
+# Copyright 2024 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+BinDir=${BinDir:-.}
+ExeExt=${ExeExt:-}
+_uptex=$BinDir/uptex$ExeExt
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
+
+TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF
+OFMFONTS=".;$srcdir/tests"; export OFMFONTS
+TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS
+TEXFORMATS=.; export TEXFORMATS
+
+# get same filename in log
+rm -f up-prim.*
+$LN_S $srcdir/uptexdir/tests/up-prim.tex ./up-prim.tex
+
+if test ! -f ./up-basic.fmt; then
+ cp $srcdir/tests/dump-basic.tex ./up-basic.tex
+ $_uptex -ini up-basic || exit 1
+fi
+
+$_uptex -fmt=up-basic -interaction=batchmode up-prim || :
+
+sed 1d up-prim.log >up-prim.out
+
+diff $srcdir/uptexdir/tests/up-prim.log up-prim.out || exit 3
+
diff --git a/Build/source/utils/configure b/Build/source/utils/configure
index ca1d8254baf..09ff0112026 100755
--- a/Build/source/utils/configure
+++ b/Build/source/utils/configure
@@ -799,6 +799,7 @@ enable_luahbtex
enable_luajithbtex
enable_mp
enable_pmp
+enable_texprof
enable_upmp
enable_xetex
enable_xetex_synctex
@@ -1599,6 +1600,7 @@ Optional Features:
--disable-luajithbtex do not compile and install LuaHBJITTeX
--disable-mp do not compile and install MetaPost
--disable-pmp do not compile and install pMetaPost
+ --disable-texprof do not compile and install TeXprof
--disable-upmp do not compile and install upMetaPost
--disable-xetex do not compile and install XeTeX
--disable-xetex-synctex build XeTeX without SyncTeX support
@@ -5028,6 +5030,17 @@ test "x$enable_web2c:$enable_pmp" = xyes:yes && {
need_libpng=yes
need_ptexenc=yes
}
+# Check whether --enable-texprof was given.
+if test ${enable_texprof+y}
+then :
+ enableval=$enable_texprof;
+fi
+case $enable_texprof in #(
+ yes | no) :
+ ;; #(
+ *) :
+ enable_texprof=yes ;;
+esac
# Check whether --enable-upmp was given.
if test ${enable_upmp+y}
then :